解决Mybatis查询方法selectById()主键不一致问题
Mybatis-plus的通用mapper为我们封装了很多方法,我们只需要将interface集成BaseMapper就可以。在BaseMapper中分装了一个方法=》selectById()

selectById
这个方法是根据主键id进行查询记录的。返回一条记录。测试如下,
最终调用的是这个方法userDiamondMapper这个接口集成了BaseMapper。
注意这个表的主键就是uid,查询试试
返回结果不如我们预期,打印出的SQL很奇怪,并没有解析正确。猜测是因为无法正确解析出主键。
改一下,使用注解标记一下主键
使用@TableId注解标记主键id为uid,重试下
这次终于正确了
注意:selectById方法默认使用的主键名是id,数据库表中如果主键id名称不一样需要手动指定
补充知识:MyBatis-Plus 踩坑 ,getById查询无效
使用AutoGenerator(AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码)生成代码后,在Controller中使用Service的getById()进行查询,返回的对象居然是null
问题出在Entity上,由于我数据表的id字段名为id且int类型,自动生成的id字段名serialVersionUID且类型为long类型,与数据库表对不上号。
使用getById(id)查询自然为null
因为entity生成出来的主键没注意到是不符合数据表的
所以解决方法是,把主键改成数据表对应的:把主键id字段名改回id,且数据类型设置int
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("board_parent")
public class Parent extends BaseEntity {
//private static final long serialVersionUID = 1L;
private int id;
@NotEmpty(message = "父论坛名不能为空!")
private String name;
@NotNull(message = "管理员ID不能为空!")
private Integer adminId;
public LocalDateTime createdDate;
public LocalDateTime updateDate;
public Integer state;
}
以上这篇解决Mybatis查询方法selectById()主键不一致问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
代码知识SEO上一篇 : Android图像切换器imageSwitcher的实例应用
下一篇 : Python可视化工具如何实现动态图表
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!