为完成学校课程一个javaweb的demo,想着对数据库的访问能够更加简洁,所以用了Mybatis。因为之前有过Springboot整合Mybatis经验,所以本以为事情会简单。在Junit的测试类中是能够正常对数据库进行CRUD。在Javaweb的Servlet类中调用数据访问的 接口编译没错。但实际对servlet发起请求时报错。-->运行时报错。
创建一个数据的访问DAO做为单例类。 通过类静态方法返回该单例对象。userMapper单一数据访问的实例。
-
- public class OnlyStatement {
-
-
- private OnlyStatement(){
-
-
- }
-
-
- private static class RealMapper{
-
- private static userMapper userMapper;
- static {
-
-
- String resource = "mybatis-config.xml";
- InputStream inputStream = null;
- try {
- inputStream = Resources.getResourceAsStream(resource);
- } catch (IOException e) {
- e.printStackTrace();
- }
- SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-
-
- //获取SqlSession对象
-
- SqlSession session = sqlSessionFactory.openSession(true);
-
-
- //获取Mapper接口代理对象
- userMapper = session.getMapper(userMapper.class);
- }
-
-
-
-
-
-
- }
-
-
-
-
- public static userMapper MYgetInstance() {
-
- return RealMapper.userMapper;
- }
-
-
- }

查看日志是在加载资源时 java.lang.NoClassDefFoundError

通过target(项目编译的生成结果)查看Mybatis和mysql的依赖jar是否已经添加到lib,这里就有个问题:
为什么maven的其他依赖的jar包(如Servlet ,JSTL)都能被添加到lib,而mysql和mybatis的jar包却无法添加?
产生该问题时的target生成目录下的lib目录: (缺失)

我们用Maven来管理web项目的目的是为了添加Jar包可以直接以添加依赖的方式进行,而不需要手动去相应的网站下载,同时能够自动导入到当前项目。
第一种方法:手动添加jar包

此时重新部署

查看日志无报错,demo正常运行。
第二种方法:
自己捣鼓配置成功的一个方法:

然后重新编译部署,最终也使得web项目成功运行。