我是靠谱客的博主 高贵樱桃,最近开发中收集的这篇文章主要介绍学习mybatis时遇到的问题前言mybatis,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

学习mybatis时遇到的问题

  • 前言
  • mybatis
    • 错误1:Error : java 不支持发行版本5
    • 错误2:Cause: java.lang.ClassNotFoundException: Cannot find class: ${driver}
    • 错误3:MySql :Could not create connection to database server.
    • 错误4:Cause: java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized
    • 错误5:向数据库DateTime字段插入数据
    • 错误5:Error serializing object, Cause:java.io.NotSerializableException:com.domain.Notice
    • !!错误6:mybatis if标签判断 integer=0时查不到
          • **解决办法**
      • 三级目录

前言

实训课程需要用到mybatis、spring、springboot等工具,在学习期间遇到的困难及解决方法如下,学习资源见文末。

mybatis

错误1:Error : java 不支持发行版本5

运行时报错如下:Error : java 不支持发行版本5
在这里插入图片描述
需要更改相关jdk版本,如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
配置完就ok了。

错误2:Cause: java.lang.ClassNotFoundException: Cannot find class: ${driver}

如图,在这里插入图片描述这是由于在文件中,引用关系如下:红数字1处引用了mybatis-config.xml,而mybatis-config.xml引用了user.xml。由于mybatis-config.xml使用了db.properties,但是mybatis-config.xml没有引用db.properties,故而出错。解决办法如下:在这里插入图片描述
在mybatis-config.xml中添加红框文字即可。

错误3:MySql :Could not create connection to database server.

原因:

MySql应用低版本jar包,产生错误

解决:首先查看mysql的版本
1.在命令行登录mysql,即可看到mysql的版本号
2.在这里插入图片描述
输入

mysql -uroot -p

显示出版本。然后使用maven导入相应的mysql包,如下:
在pom.xml中更改
在这里插入图片描述
代码如下:
下面展示一些 内联代码片

        <!--导入mysql的依赖库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>

错误4:Cause: java.sql.SQLException: The server time zone value ‘�й���׼ʱ��’ is unrecognized

这是由于mysql时区出现了问题,需要在db.properties中做如下更改
在这里插入图片描述
代码为

?serverTimezone=UTC

错误5:向数据库DateTime字段插入数据

由于domain文件中,DateTime类型被写为了LocalDateTime类型,故写入数据库的类型,必须是LocalDateTime类型;写入代码如下:

LocalDateTime dateTime = LocalDateTime.now();
notice.setCreateTime(dateTime);
dao.addNotice(notice);

第一句获取当前时间,第二句将notice类的CreateTime设为当前时间,第三句执行插入语句

错误5:Error serializing object, Cause:java.io.NotSerializableException:com.domain.Notice

开启二级缓存时,运行报错,Error serializing object, Cause:java.io.NotSerializableException:com.domain.Notice
此错误发生于第二次查找对象时,原因是在关闭SQLSession对象时,发现开启二级缓存,需要将对象序列化(存储于二级缓存中),而Notice类没有实现序列化接口,无法给二级缓存中储存。
解决方法:修改Notice类

public class Notice implements Serializable{
....
}

详见文章mybatis学习笔记

!!错误6:mybatis if标签判断 integer=0时查不到

查询时判断值为0的时候,穿不了参数;值为其他数,都可传。
传入参数为-1的情况:
传入参数为-1的情况
传入参数为0的情况:
传入参数为0的情况
错误原因
Mybatis对于传入Integer类型的参数,且传的值为0时,会把他看作空字符串。只需要去掉标签里的空值判断即可。

解决办法
<if test="status != null  and status != ''">
     and payment_application.status = #{status}
</if>

把空值判断去除,如下

<if test="status != null">
    AND payment_application.status = #{status}
</if>

三级目录

最后

以上就是高贵樱桃为你收集整理的学习mybatis时遇到的问题前言mybatis的全部内容,希望文章能够帮你解决学习mybatis时遇到的问题前言mybatis所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部