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>