遇到一个很神奇的 mybatis 问题,各位大佬帮忙看看
遇到一个很神奇的 mybatis 问题,各位大佬帮忙看看在使用 mybatis 根据主键更新数据的时候,使用 updateByPrimaryKeySelective 方法。更新的实体上打了主键标签(@Id ),主键 id 也不是 null ,但是就更新不了数据。
mybatis 什么版本不说一下 😂
SQL 日志打印出来居然不是根据主键 id 更新:Preparing: UPDATE admin SET name = ?,password = ?,age = ?,sex = ?,phone = ? WHERE name = ? AND password = ? AND age = ? AND sex = ? AND phone = ?
实体类和 Mapper 看下,tkmybatis 没用过
#4 (name = "admin")public class Admin { / 主键 id / (strategy = GenerationType.IDENTITY) private Integer id; / 用户名 / (name = "name") private String name; /* 密码 */ (name = "password") private String password;}
Mapper 直接使用这个实体类 Admin 吗?还需要配置 Admin 的扫描路径吗
我这边更新成功了 ,id 列加下注解 (strategy=GenerationType.IDENTITY) (name = "id") private Integer id;
不加 注解也是更新成功的,mybatis-spring-boot-starter 和 mapper 的版本和你一样
create table admin(id int(32) primary key, name varchar(20)); 必须声明主键,否则更新失败。
不是主键也更新成功了。create table admin(id int(32), name varchar(20));
你的注解不是 mybatis 的。
我错了,,请使用 mybatisplus 吧,tk mapper 不行了。
不加 注解应该也是可以的,但是我就不行,不知道哪里出了问题
是不是 用成了别的包的,正确的是 javax.persistence 包的,mapper.xml 的 resultMap 里面有没有配
#14 mapper.xml 的 resultMap 里面有没有配“
#15 是 id 标签,怎么老被吞
debug 看看 sql 生成逻辑,这种估计是内部注解处理的问题
这个我检查过了,是 javax. persistence
debug 过了,日志也打了,where 条件里面压根就没有 id ,打印日志我上面发过
问题找到了,我在主键上加上 (name = "id")注解,就能更新成功。但是我看有的人没有加这个注解,也能更新成功。
你这是表没有主键吧
我意思是你看看生成 sql 的逻辑,看框架是怎么处理注解的
诉求,我需要监听一个 api 的余额信息,如果余额太低了就给我发送通知 现在我的解决办法是通过 飞书的机器人来实现通知,但是有个问题就是这个通知有时候经常就忽略, 并不是那种强…
个人及家庭 10 多年相册累计约 700g ,目前备份有 2 个,分别是1 、主 nas 内备份到 1 个备份硬盘2 、备用 nas 有 1 个全量备份,每周同步 1 次最近看…
如题,最近突然发现表达能力已经不行了, 说话磕磕巴巴,不知道是咋回事。 平时工作忙起来,一天说话都不超过十句。 这样下去肯定不行,如何提高表达能力,各位有啥好办法吗? PS:真…