使用内部方法更新删除查找时没有效果的问题。
有时为了方便我们会选择直接使用内部方法insert
,delete
,update
,select
来直接实现增删改查,但是这时有些同学会发现这些方法没有起到实质作用,前台没有返回,数据库中的数据没有改变,但是又会发现在日志中能够发现方法已经被调用了(可以参考我的上一篇博客https://blog.csdn.net/liusuxilinyue/article/details/82688323关于AOP拦截方法打印日志的使用)。
结果如下:
这是因为你是根据类的主键来更新删除查找的,你需要在你的model
类中的主键字段添加@Id
注解,这样内部方法delete、update、select
才会根据你的@Id
所标注的主键来查找。
public class Project {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;
@Id
@Column(name = "project_sn")
private String projectSn;
@Column(name = "project_name")
private String projectName;
**省略getter和setter方法**
}
上面代码中我的主键是projectSn
,加上@Id
,然后再服务层service中便可以使用主键来更新,删除,查找了。
但是你会发现你的数据库中的主键标注的主键是Id,并且通过mybatis工具生成的model中的
Project
类中自动生成的主键@Id是在Id这一字段中的,只是这不影响你的程序运行,如果你不希望这样不匹配的话,你可以使用SQL语句来实现上面的更新,删除,查找的功能。