概述
学习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的情况:
传入参数为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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复