您的位置:首页 > 移动开发

第一个MyBatis遇到的坑:空指针异常,MapperRegistry,资源导出问题...

2020-07-28 09:17 1831 查看

1.获取SqlSession空指针异常

报错

1.getSqlSession空指针异常
java.lang.NullPointerException
at com.bang.utils.MyBatisUtils.getSqlSession(MyBatisUtils.java:24
2.找不到MyBatis配置文件
java.io.IOException: Could not find resource org/mybatis/example/mybatis-config.xml

问题:工具类写错了或者资源文件没有被标记

public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream  = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}

1.通常配置文件mybatis-config.xml,放在resources目录下,这个直接写 String resource = “mybatis-config.xml”;,如果放到其他目录下,要加上具体目录的位置。
2.(遇到的坑)上面

private static SqlSessionFactory sqlSessionFactory;
已经提升了作用域,要把下面的 SqlSessionFactory去掉,不然报空指针异常。

//改成
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

3.(如果是手动创建)检查resources是否标记为默认资源文件

2、没有注册Mapper

在MyBatis-config.xml中注册

<mappers>
<mapper resource="com/bang/dao/UserMapper.xml"></mapper>
</mappers>

3、Mapper.xml资源导出失败的问题

如果Mapper.xml文件没有放到resources目录(项目默认资源文件)下,而是放到java目录下,它在运行时会无法被导出或者生效。

解决
我们只需要在pom.xml下添加build

<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: