(傲娇的白狐)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语句

 

posted @ 2020-07-19 14:43  傲娇的白狐  阅读(155)  评论(0)    收藏  举报