一.分页查询
1.配置分页拦截器
package com.hxstrive.mybatis_plus;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件。如果你不配置,分页插件将不生效
*/
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 指定数据库方言为 MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
2.mybatisplus表明映射可以在实体类中加
@TableName("user")
还有就是在配置文件中设置
mybatis-plus:
global-config:
db-config:
#表名前缀
# table-prefix: tb_
id-type: auto
logic-delete-field: delFlag
logic-delete-value: 1
logic-not-delete-value: 0
3.id的自动增长可以在表的实体类中设置主键为
@TableId(value = "id", type = IdType.AUTO)
private Long id;
也可以在配置文件中设置id-type:auto
4.设置字段和列名称的驼峰映射在配置文件中,默认开启
# map-underscore-to-camel-case: false
5.字段映射应该在实体类中加入注解@TableField("name")
@ApiModelProperty(value = "姓名") @TableField("name") private String name;
6.mp中的日志查询sql语句
configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
控制台打印
7.mp中中的deleteByMap()方法按照key为列名的条件,值为值进行删除
8.mybatis操作的mapper中的相关方法
在yml文件中配置mapper的文件的路径
#指定mapper文件的存放路径 mapper-locations: classpath*:/mapper/**/*.xml
条件构造器
User finduserByWrapper(@Param(Constants.WRAPPER) Wrapper<User> wrapper);
mappper文件的配置
<select id="finduserByWrapper" resultType="com.myself.entity.User"> select * from user ${ew.customSqlSegment}; </select>
9.mybatisPlus分页查询
创建配置类配置mybatisplus的分页
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
10.自定义分页查询(多表查询)
定义接口,定义方法,如果要返回分页数据需要在方法中加入分页的对象
Page<Orders> Orderlist(Page<User> page);
11.自动填充字段
1.给自动填充的字段加上注解,标识以及表示我们在进行什么操作时进行自动填充
2.自定义填充器,例如:
@TableField(fill=FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 插入元对象字段填充(用于插入时对公共字段的填充)
*
* @param metaObject 元对象
*/
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
/**
* 更新元对象字段填充(用于更新时对公共字段的填充)
*
* @param metaObject 元对象
*/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
要将该配置类加入到spring容器中@Component
12.逻辑删除在mybatisplus3.3.0之前需要在相应的逻辑删除字段之前加上@TableLogic注解别且在yml配置文件中
logic-delete-field: delFlag //逻辑删除字段
logic-delete-value: 1 //删除为1
logic-not-delete-value: 0 //未删除为0
版本3.3.0之后则可以不需要加注解
13.乐观锁的配置version
在相应的实体类加相应的字段,并在字段上加入相应的注解@version
配置乐观锁
///**
// * 乐观锁的配置
// * @return
// */
//@Bean
//public MybatisPlusInterceptor OptimisticLockerInnerInterceptor() {
// MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
// return mybatisPlusInterceptor
//}
14.@Accessors(chain=true)
这样就可以用链式访问,该注解设置为chain=true,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。