//4.批量修改
List list = new ArrayList<>();
list.add(user);
this.updateBatchById(list);
3.删除
- 物理删除
默认都是物理删除,会删除数据库中的该条记录。
public void remove(int id){
this.removeById(id);
}
其他方式:
//lambda表达式方式
this.remove(Wrappers.lambdaQuery(User.class).eq(User::getId,id));
//数据库原字段方式
this.remove(new QueryWrapper().eq(“id”,id));
//批量删除
this.removeByIds(ids);
- 逻辑删除
逻辑删除不会删除数据库中的记录,只会修改删除标志字段。
使用方式,在字段上加上@TableLogic注解。
@TableLogic
private Integer deleted;
默认1为已删除,0为未删除。
当你调用删除方法比如removeById时不会删除记录,只会把deleted字段改为1;
你也可以配置已删除/未删除的标志值。
mybatis-plus:
global-config:
db-config:
logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置注解@TableLogic)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
4.查询
查询方式可以查询单条记录信息和多条信息,示例如下:
//单个查询
User user = this.getById(id);
//lambda表达式
User user = this.getOne(Wrappers.lambdaQuery(User.class)
.eq(User::getId,id));
//数据库原字段
User user = this.getOne(new QueryWrapper()
.eq(“id”,id));
//查询多条记录
List ids = new ArrayList();
ids.add(1);
ids.add(2);
List users = this.listByIds(ids);
//查询20岁到30岁之间的用户
List users = this.list(Wrappers.lambdaQuery(User.class)
.ge(User::getAge,20)
.le(User::getAge,30));
//查询20岁或者30岁之间的用户
List users = this.list(Wrappers.lambdaQuery(User.class)
.eq(User::getAge,20)
.or().eq(User::getAge,30));
//查询年龄最小的10条记录
List users = this.list(Wrappers.lambdaQuery(User.class)
.orderByAsc(User::getAge)
.last(“limit 10”));
可以使用func方法根据参数指定对应的sql语句:
String orderColumn = “age”;
List users = this.list(Wrappers.lambdaQuery(User.class)
.func(w->{
//如果排序列是年龄则根据年龄排序
if(“age”.equals(orderColumn)){
w.orderByAsc(User::getAge);
}else if(“nickName”.equals(orderColumn)){
//如果排序列是昵称则根据昵称排序
w.orderByAsc(User::getNickName);
}
}));
在3.4.0版本以前使用的是PaginationInterceptor,只需要在配置类中定义:
@Bean
public PaginationInte