MyBatis-Plus简介:
主体知识点:
MyBatis-Plus官网:
简介 | MyBatis-Plushttps://www.mybatis-plus.com/guide/#%E7%89%B9%E6%80%A7
注解
(一)@TableName("表名"):表名注解
value属性指定表名:
Mybatis会默然把实体名的首字母小写形式,当做成其对应的数据库表名,所以特殊情况下,需要我们设置前缀,或者单独指定表名。
设置全局实体类所对应的表名的统一前缀:
#设置MyBatis-Plus的全局配置
global-config:
db-config:
#设置注解@TableName("表名") 指定表名的前缀
table-prefix: tb_
(二)@TableId:组件注解
MybatisPlus默认把实体中名为id的字段,看做成主键。而实际开发中,存在主机字段名不为id的情况,所以需要我们手动指定。
使用:在实体类中,把@TableId放在主健属性上即可
1,value属性:
当实体类属性和数据主键字段名字不对应时,可以通过@TableId的value属性指定映射到数据库的某个字段
2,type属性:
Mybatis主键的生成策略默认采用雪花算法,当想要改成自增生成id时,需两步设置:
- 数据库表中,主键字段名设置为自增
- 实体类中,@TableId的type属性设置为
常用的主键生成策略:
设置全局统一的主键生成策略:
在application.yml配置文件中配置
#设置MyBatis-Plus的全局配置
global-config:
db-config:
#设置注解@TableName("表名") 指定表名的前缀
table-prefix: tb_
#设置全局主键生成策略
id-type: auto
id-type可以选的值
雪花算法
(三)@TableField:字段注解(非主键)
解决属性名和普通数据库字段名(非主键)不一致问题
1,框架自动映射的情况:
2,@TableField的value属性手动设置映射:
(四) @TableLogic:逻辑删除
给实体特定某个属性添加这个注解后,使用框架提供的删除方法,会默认变成修改该字段值为1的修改操作,且提供的所有查询方法,也会默认查询未被删除过的记录(该字段值为0)
这个特定属性对应的数据字段要设置为int类型,且设置默认值为0(代表未删除)
条件构造器wapper
结构:
P33
分页插件
1,创建拦截器
@Configuration
public class MyBatisPlusApplication {
@Bean
public MybatisPlusInterceptor plusInterceptor(){
//拦截器
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//添加分页拦截器
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
//添加乐观锁插件
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
//return to SpringIOC
return mybatisPlusInterceptor;
}
}
2,使用
@Test
public void testPage1(){
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ge(User::getAge,23);
Page<User> page = new Page<>(2,3);
userMapper.selectPage(page, queryWrapper);
System.out.println(page);
System.out.println(page.getRecords());
}
乐观锁和悲观锁
两者地区别
(一)乐观锁的实现流程:
P51