学习mybatis时遇到的问题

前言

实训课程需要用到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>

三级目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值