标准数据层开发:
添加依赖:
idea未收录关于mybatis的配置
设置jdbc参数
定义数据接口,继承BaseMapper<实体类的类名>
简介lombok:
依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
分页:
标准分页制作:
需要提前准备一个mybatis的拦截器作为bean
publicclass MpConfig{
@Bean
public MybatisPlusInterceptor mpInterceptor(){
//1.定义Mp拦截器
MybatisPlusInterceptormpInterceptor = new MybatisPlusInterceptor();
//2.添加具体的拦截器
mpInterceptor.addInnerInterceptor (new PaginationInnerInterceptor());
returnmpInterceptor;
}
}
voidtestGetByPage(){
//IPage对象封装了分页操作相关的数据
Ipage page=new Page(2,3);//当前显示第二页,每页放三条数据
userDao.selectPage(page,null);//null处本应该存放查询条件,但此时没有条件
}
查询:
查询条件:
eq:等于
ne:不等于
gt:大于
ge:大于等于
lt:小于
le:小于等于
like:模糊查询(like(“name”,“jo”)-->查询name字段包含“jo”的数据
in:IN查询条件 In("status", 1, 2, 3) // 查询status字段值为1、2或3的记录
isNull:空值查询
isNotNull:非空值查询
between:区间查询
orderByAsc:升序排序条件
orderByAsc("create_time") // 按照create_time字段进行升序排序
orderByDesc:降序排序条件。
orderByDesc("create_time") // 按照create_time字段进行降序排序
查询格式(支持链式编程)
![](https://img-blog.csdnimg.cn/e602d83ad1834bcdaf3c383f8d933336.png)
null值处理:
选择有三个参数的方法做null值处理
省去了写ifelse的不便
增强了代码 可读性
查询投影(查询的字段控制):
DQL编程控制:
字段映射与表名映射:
问题:表字段与编码属性设计不同步
使用@TableField 添加映射
@TableField(value“pwd”)
private String password;
此时表字段pwd就与属性password形成映射
问题:编码属性在表字段中不存在
表示这个属性仅在编码中使用
问题:有些属性不想被展示
select=false即可不被展示
问题:表名与编码开发设计不同步
建立类与表名的映射
DML:
id生成策略:
使用注解:@TableId(type = IdType.类型)
多条数据同时查询/删除:
deleteBatchIds(list集合)
selectBatchIds(list集合)
逻辑删除:
将废弃数据标记
标记为逻辑删除字段
@Tablelogic(value = "0",deval = "1" )
value表示未删除时的值,deval代表被删除的值
乐观锁:
用于解决秒杀问题
经典秒杀问题<2000访问量/s
1.创建乐观锁拦截器
2.在数据库中加入标记字段
3.加上在编程属性加上@Version