1、乐观锁:OptimisticLockerInterceptor,就是在更新数据的时候,根据版本号,来判断是否为更新的版本,若为更新指定的版本一致,则更新,否则则否。
在实体类添加版本号属性,属性上添加注解@Version
数据库字段的版本号必须为int类型,否则更新后不会自增版本
2、SQL分析插件:SqlExplainInterceptor分析是否有垃圾sql执行,有的话会报错拦截
代码
(1)添加配置文件
在MybatissqlSessionFactory配置下 添加
(2)实体类Admin.java
@TableName("admin")
public class Admin {
@TableId(value = "admin_account",type = IdType.NONE)
private String adminAccount;
private String adminPwd;
@Version
private Integer version;
public Admin() {
}
public Admin(String adminAccount, String adminPwd) {
this.adminAccount = adminAccount;
this.adminPwd = adminPwd;
}
public String getAdminAccount() {
return adminAccount;
}
public void setAdminAccount(String adminAccount) {
this.adminAccount = adminAccount;
}
public String getAdminPwd() {
return adminPwd;
}
public void setAdminPwd(String adminPwd) {
this.adminPwd = adminPwd;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public Admin(String adminAccount, String adminPwd, Integer version) {
this.adminAccount = adminAccount;
this.adminPwd = adminPwd;
this.version = version;
}
}
(3)测试类
public class MyTest {
@Test
public void test05(){
AdminDao bean = applicationContext.getBean(AdminDao.class);
Admin admin = new Admin();
admin.setAdminAccount("2333");
admin.setAdminPwd("5442");
admin.setVersion(1);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("admin_account",admin.getAdminAccount());
int update = bean.update(admin, queryWrapper);
System.out.println(update);
}
@Test
public void test06(){
AdminDao bean = applicationContext.getBean(AdminDao.class);
Admin admin = new Admin();
admin.setAdminAccount("2333");
admin.setAdminPwd("5442");
admin.setVersion(2);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.or();
int update = bean.update(admin, queryWrapper);
System.out.println(update);
}
}



