mybatis创建错误

举报
Java的学习之路 发表于 2022/03/29 10:49:30 2022/03/29
【摘要】 今天在学习mybatis的时候,遇到了这样的错误:1.Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 ...

今天在学习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
在这里插入图片描述
注意:我们修改完以后,要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语句肯定也是错误的

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。