Mybatis Plus笔记
使用步骤
- 第一步:导入pom文件
- 第二步:接口实现BaseMapper<实体类>,并且在头上加一个@Repository注解,交由spring管理,以便等下启动类扫描
- 第三步:在启动类添加@MapperScan("com.你的接口地址")
- 第四步:使用 --在需要用到的地方用@Autowired注入
主键策略
- 自动增长 AUTO INCREMENT
- uuid 每次生产随机唯一值
- Redis实现
- Mybatis plus自带实现 ---
方法是--在实体类ID主键上方加上 @TableId(type =IdType.AUTO)
AUTO--自动增长
ID_WORKER--生成19位值,数值类型用这种
ID_WORKER_STR--生成19位值,字符串类型用这种
Mybatis plus properties配置打印信息
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl**
自动填充--一般用于添加时间和修改时间
-
第一步:在实体类需要自动填充的属性上面添加注解
①@TableField(fill=FieldFill.INSERT)--添加
②@TableField(fill=FieldFill.INSERT_UPDATE)--添加和修改 -
第二步:创建类,实现接口 MetaObjectHandler,添加@Component注解,并重写两个方法
`@Component
public class newData implements MetaObjectHandler {@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("你的实体类添加时间属性",new Date(),metaObject);
this.setFieldValByName("你的实体类修改时间属性",new Date(),metaObject);
}@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("你的实体类修改时间属性",new Date(),metaObject);
}
}`
乐观锁
问题:丢失更新---多个人同时修改一条数据,最后提交的数据会覆盖前面修改的
解决方案:👇
--悲观锁--
串行操作,同一条数据只能同时有一个人修改数据,其他人需要等这个人修改完才能修改
乐观锁--
数据表添加version(版本号),修改成功后会在原有的版本上+1,修改数据时会检查当前版本是否和数据库一致,如不一致则不能修改。
1. 数据库中添加Version字段,作为乐观锁版本号

2. 实体类添加Version字段,并添加@Version注解

3. 乐观锁插件--放入配置类中,也可以放在启动类
`@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}`
测试

分页
-
创建配置类
PageHelper分页配置 @Bean public PaginationInterceptor paginationInterceptor(){ return new PaginationInterceptor(); } -
编写分页代码
![]()
`//分页查询
@Test
public void testpage(){
//创建page对象,传入当前页和记录数
Pagepage =new Page<>(1,3);
//调用分页查询的方法,传入page对象和条件
userinfoMapper.selectPage(page,null);
//通过page对象得到分页数据
System.out.println(page.getCurrent());//当前第几页
System.out.println(page.getRecords());//每页数据list集合
System.out.println(page.getSize());//每页记录显示大小
System.out.println(page.getTotal());//数据总数
System.out.println(page.getPages());//总页数System.out.println(page.hasNext());//是否有下一页 System.out.println(page.hasPrevious());//是否有上一页}`
逻辑删除
---简单说就是修改某字段值,列如显示1是已经删除,0是正常
---流程 👇
-1. 数据库添加删除状态字段

-2. 实体类添加删除状态字段
@TableField(fill= FieldFill.INSERT) @TableLogic private Integer deleted;//逻辑删除
--并且在自动填充类添加默认值0
//逻辑删除 this.setFieldValByName("deleted",0,metaObject);
-3. 执行删除后,你会发现其实是修改了状态字段的一个值

复杂查询
- 创建QueryWrapper对象
- 调用方法实现各种条件的查询
通过QueryWrapper设置条件 ge(大于等于>=)、 gt(大于>)、 le(小于等于<=)、 lt(小于<)、eq(等于=)、ne(不等于!=)、like(模糊查询)、orderByDesc/Asc(排序查询)、last(语句最后拼接sql)、between(范围查询)、select(查询指定列)
![]()
配合方法使用
-1.根据名字查询一条对象信息
User user=UserServeci.getOne(new LambdaQueryWrapper
Mybatis,Oracle数据库XML开始时间结束时间
---



浙公网安备 33010602011771号