为简化开发而生
首先需要在使用的mapper中继承(extends BaseMapper),使用@Repository注解
@Repository public interface UserMapper extends BaseMapper<User> { }下面是实体类
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="User对象", description="") public class User implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键ID") @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value = "姓名") private String name; @ApiModelProperty(value = "年龄") private Integer age; @ApiModelProperty(value = "邮箱") private String email; @ApiModelProperty(value = "乐观锁") @Version private Integer version; @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; @TableLogic private Integer deleted; }如果你使用了@TableField(fill = FieldFill.INSERT_UPDATE)注解,配置了策略
@Slf4j @Component public class MyMetaObjectHandler implements MetaObjectHandler { /** * 重写插入时的填充策略 * @param metaObject */ @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill ......"); this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); } /** * 重写更新时的填充策略 * @param metaObject */ @Override public void updateFill(MetaObject metaObject) { log.info("start update fill ......"); this.setFieldValByName("updateTime", new Date(), metaObject); } }下面是一些常用插件配置类
@MapperScan("com.sunreal.dao") @EnableTransactionManagement @Configuration // 配置类 public class MyBatisPlusConfig { /** * 注册乐观锁插件 * @return */ @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } /** * 逻辑删除插件 * @return */ @Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); } /** * SQL执行效率插件 * 设置dev test环境开启 * @return */ @Bean @Profile({"dev", "test"}) public PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); // ms 设置sql执行的最大时间,如果超过了则不执行 performanceInterceptor.setMaxTime(100); // 是否格式化代码 performanceInterceptor.setFormat(true); return performanceInterceptor; } }以及我的配置文件 0.0~~~
# 设置开发环境 spring.profiles.active=dev server.port=9000 # mysql 5 驱动不同 # mysql 8 驱动不同com.mysql.cj.jdbc.Driver(默认向下兼容) 需要增加时区的配置 serverTimezone=GMT%2B8 # 数据库连接配置 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 配置日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl # 配置逻辑删除 mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0我的测试小Demo
@SpringBootTest public class WrapperTest { @Autowired private UserMapper userMapper; @Test public void test() { QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper. isNotNull("name") .isNotNull("email") .ge("age", 20); userMapper.selectList(wrapper).forEach(System.out::println); } @Test public void test2() { QueryWrapper<User> userQueryWrapper = new QueryWrapper<>(); userQueryWrapper.eq("name", "Tom"); User user = userMapper.selectOne(userQueryWrapper); System.out.println(user); } @Test public void test3() { QueryWrapper<User> userQueryWrapper = new QueryWrapper<>(); userQueryWrapper.eq("name", "Sandy"); Integer integer = userMapper.selectCount(userQueryWrapper); System.out.println(integer); } @Test public void test4() { QueryWrapper<User> userQueryWrapper = new QueryWrapper<>(); userQueryWrapper.notLike("name", "J").likeRight("email", "t"); userMapper.selectMaps(userQueryWrapper).forEach(System.out::println); } @Test public void test5() { QueryWrapper<User> userQueryWrapper = new QueryWrapper<>(); userQueryWrapper.inSql("id", "select id from user where id < 3"); List<Object> objects = userMapper.selectObjs(userQueryWrapper); objects.forEach(System.out::println); } @Test public void test6() { QueryWrapper<User> userQueryWrapper = new QueryWrapper<>(); // 通过id进行排序 userQueryWrapper.orderByDesc("id"); List<User> userList = userMapper.selectList(userQueryWrapper); userList.forEach(System.out::println); } }