0
点赞
收藏
分享

微信扫一扫

mybatis常见错误


今天在学习mybatis的时候,遇到了这样的错误:

1.Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。

解决方法:file-settings-file encodings

把project encodings改成utf-8

mybatis常见错误_mybatis

注意:我们修改完以后,要clean一下,再编译,否则还会报错

然后在mybatis构建中,我还遇到下面的错误

2.java.lang.NullPointerException
at com.kuang.utils.MybatisUtils.getSqlSession

报的是空指针异常,后面我查看的时候

下面这个是我出错的代码,我发现,本来已经定义好了一个静态变量sqlSessionFactory,结果我却又新建了一个,静态变量随着类加载而加载,所以报空指针异常

private static SqlSessionFactory sqlSessionFactory;

static {

try {
//读取配置文件
//下面三句话是固定的
//使用Mybatis第一步:获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);

} catch (IOException e) {
e.printStackTrace();
}
}

解决方法,不要创建两个对象

private static SqlSessionFactory sqlSessionFactory;

static {

try {
//读取配置文件
//下面三句话是固定的
//使用Mybatis第一步:获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}

3.使用mybatis连接数据库时报错:Error querying database. Cause: java.sql.SQLException: The server time zone value

方案:使用mysql 8.0以上的驱动需要配置时区才能正常使用
在url中添加:serverTimezone=Asia/Shanghai

jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=UTF-8

4.Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table ‘mybatis.user’ doesn’t exist

这个错误是由于我的粗心导致的,我在学习mybatis的时候,创建一个用来测试的数据库mybatis,里面创建的表是t_user,但是我忘记了,以为表是user,所以写的sql语句肯定也是错误的



举报

相关推荐

0 条评论