在控制台显示SQL语句以及信息,需要配置文件添加
#配置后可以显示sql语句
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mybatis plus的ID自动增长的用法
@TableId(type = IdType.AUTO)//自动增长
private Long ID ; //ID
@TableId(type = IdType.INPUT)//需要自动输入ID
private Long ID ; //ID
@TableId(type = IdType.NONE)//需要自动输入ID
private Long ID ; //ID
@TableId(type = IdType.ASSIGN_UUID)//随机生成一个值
private Long ID ; //ID
@TableId(type = IdType.ASSIGN_ID)//雪花算法
private Long ID ; //ID
mybatis plus的自动填充的用法
@TableField(fill = FieldFill.INSERT) //在添加的时候会自动填充一个值
private Date createtime ; //创建时间
@TableField(fill = FieldFill.INSERT_UPDATE) //在添加的时候都会有值
private Date updatetime ; //修改时间
创建一个类并交给spring管理
package com.liyiba.employee.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 使用mp实现添加操作,这个方法执行
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
//实体类中的字段 需要自动填充的数据 metaObject
this.setFieldValByName("createtime",new Date(),metaObject);
//实体类中的字段 需要自动填充的数据 metaObject
this.setFieldValByName("updatetime",new Date(),metaObject);
//实体类中的字段 需要自动填充的数据 metaObject 用于乐观锁
this.setFieldValByName("version",1,metaObject);
}
/**
* 使用mp实现修改操作,这个方法执行
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updatetime",new Date(),metaObject);
}
}
乐观锁
//在数据库与实体类加一个代表版本号的字段
@Version //加上注解代表为乐观锁
private Integer version ; //版本号
配置乐观锁插件
package com.liyiba.employee.Config;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.liyiba.employee.dao")
public class MpConfig {
//乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
测试:
@Autowired
private UserService userService ;
@Test
void contextLoads() {
//根据ID查询数据
User user = userService.findAllById(1L);
//进行修改
user.setUsername("2222");
userService.updateById(user);
}
多条查询:
userDao.selectBatchIds(Arrays.asList(1,2));
mybatis分页查询
//分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
@Test
void contextLoads() {
//1.创建一个page对象
//2.传入两个参数:当前页 和 每页显示的条数
Page page = new Page<>(1,3);
//3.调用分页查询的方法
userDao.selectPage(page, null);
}
逻辑删除
@TableLogic
//在数据库与实体类中加个deleted
private Integer deleted ; //逻辑删除
性能分析插件
//Spring boot方式
@EnableTransactionManagement
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {
/**
* SQL执行效率插件
*/
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
}
}