原文地址:https://www.miaoroom.com/code/note/mybatis-debug-notes.html
出处:喵容
本文会零零碎碎的更新自己在学习 Java持久层
碰到的问题和解决办法,希望这些踩坑的历程能给需要的你带来帮助。
由于文章主要为 Spring Data JPA
和 Mybatis
的内容。
private Integer categoryId;
这个错误看上去是这张表没有主键,在使用hibernate的映射表的时候entity类是必须要主键的,否则就会报出这个异常。所以解决如下,添加自增的ID主键:
@Id
@GeneratedValue
private Integer categoryId;
如果我们已经配置了@ID,还会报这个错误是因为import错包了,错误的使用了org.springframework.data.annotation.Id包。
当我们使用@Entity的时候,提示我们Entity过时,被划了横线,是因错误的引用了org.hibernate.annotations.Entity包,这里应该使用JPA的注解javax.persistence.Entity,而不是hibernate的。
在实体中,将ID生成略组改成@GeneratedValue(strategy = GenerationType.IDENTITY)。
如以下:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer categoryId;
在方法前加上 code>@Transactional 注解,会让你当前的事务操作在执行完成后完全回滚。若执行完未报错,则意为测试通过。可搭配Aseert
断言使用,这样便省去了我们测试完还要删除测试数据的多余操作。
PageRequest类使用的时候利用new一个对象的时候报错,所这个方法过时了,解决方法
PageRequest pageRequest=new PageRequest(int ,int );//提示方法过时
应该使用
PageRequest request = PageRequest.of(0,1);
在使用tk.mybatis建立实体的时候我们使mapper继承myMapper不需要我们对mapper.xml文件中写很多重复的代码了,如果因为表中没有实体中对应的字段而出现错误Caused by: java.lang.IllegalStateException: No typehandler found for property xxx,这种情况下就需要你去排查字段。
1、传入一个参数时
id为mapper接口中的方法名,resultMap为返回类型,parameterType为输入参数的类型
对应的xml配置:
2、传入多个参数时
mapper接口配置:
对应的xml配置:
由于是多参数那么就不能使用parameterType, 这里用@Param来指定哪一个
View Comments
一一一一