(傲娇的白狐)Mybatis-plus增删改查
Mybatis-plus基础用法
1. 修改 自动填充
1.1修改
@Test
void test2() {
Visrge visrge = new Visrge();
visrge.setId(1);
visrge.setName("洛天依");
visrge.setDate(new Date());
visrge.setUsername("洛书天依");
visrge.setView("15");
visrgemapper.updateById(visrge);// 传的是对象 中的id
System.out.println(visrgemapper.selectList(null).toString());
}
1.2 自动填充
数据库级别:在数据库创建时 时间类型
创建两个 create_time 和 update_time 选中 create_time 或update_time
的自增 默认值改为 CURRENT_TIMESTAMP 即可
代码级别
首先确定 确定数据库id时自增
在实体类上 标注
@TableField(fill = FieldFill.INSERT)
private Date create_time;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date update_time;
* 默认不处理
DEFAULT,
* 插入填充字段
INSERT,
* 更新填充字段
UPDATE,
* 插入和更新填充字段
INSERT_UPDATE
新建一个类 继承implements MetaObjectHandler 实现其方法
// 添加时
@Override
public void insertFill(MetaObject metaObject) {
// (String fieldName, Object fieldVal, MetaObject metaObject)
this.setFieldValByName("create_time",new Date(),metaObject);
this.setFieldValByName("update_time",new Date(),metaObject);
}
//删除时
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("update_time",new Date(),metaObject);
}
- 这样在添加 修改时就会自动修改日期为最新
2.查询 分页
2.1 查询
所有查询 selectList(null)
批量查询 selectBatchIds(Arrays.asList(1,2,3));
条件查询 selectByMap(map);
Map map=new HashMap();
map.put("","");
List list = visrgemapper.selectByMap(map);
---分页查询 配置好拦截器 直接用
2.2 分页
@Beanpublic PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
// 具体的分配数据
// paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
例子:
// 当前页 页面大小
Page<Visrge> page=new Page<>(1,4);
visrgemapper.selectPage(page,null);
// 获取所有
page.getRecords().forEach(
System.out::println
);
// 总数
page.getTotal();
3. 删除 逻辑删除
3.1基本删除
// 单删除
userceshimapper.deleteById(1);
// 批量
userceshimapper.deleteBatchIds(Arrays.asList(1,2));
// map
HashMap map=new HashMap();
map.put("","");
userceshimapper.deleteByMap(map);
3.2 逻辑删除
只对自动注入的sql起效:-----逻辑删除 查询时候会自动过滤被逻辑删除的字段
物理删除:从数据库中直接移除
逻辑删除:在数据库中没有被删除,而是通过一个变量让它失效。
3.2.1 做的是更新操作,不是删除操作
首先在数据库课表里有一个 delted 用来逻辑删除
如 等于0时 为删除 1时没删除
首先注入配置
// 逻辑删除器
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
3.2.2 在定义的类例 的变量上
在 配置文件中application.properties 或 yml里
# 逻辑删除时为1
mybatis-plus.global-config.db-config.logic-delete-value=1
# 没逻辑删除时为0
mybatis-plus.global-config.db-config.logic-not-delete-value=0
例: 被逻辑删除的不会被查询出来
// // 单删除
// userceshimapper.deleteById(1);
List<Userceshi> list = userceshimapper.selectList(null);
list.forEach(System.out::println);
// 重新修改的话 不要用自动注入 用普通sql语句

浙公网安备 33010602011771号