@TableId(type = IdType.AUTO)
package com.song.pojo; import com.baomidou.mybatisplus.annotation.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String email; }源码分析
public enum IdType { AUTO(0),//数据库的自增 注意在使用时 将数据库中的id字段设置为自增 NONE(1),//未设置主键 INPUT(2),//手动输入 ID_WORKER(3),//默认的全局唯一id UUID(4),//全局唯一id 主键类型为String ID_WORKER_STR(5);//字符串表示 }创建时间、修改时间!这些个操作一遍都是自动化完成的,我们不希望手动更新!
// 字段添加填充内容 @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;编写处理器来处理这个注解 :在这里我们编写了MyMetaObjectHandler类实现 MetaObjectHandler接口
package com.song.handle; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; //加载到spring ioc 容器中 @Component //生成日志 @Slf4j public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill ...."); this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { log.info("start update fill ...."); this.setFieldValByName("updateTime",new Date(),metaObject); } }MybatisPlusConfig配置类
package com.song.config; import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; //扫描mapper接口 @MapperScan("com.song.mapper") @EnableTransactionManagement @Configuration // 配置类 public class MybatisPlusConfig { // 注册乐观锁插件 @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } //分页插件 @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }测试
//乐观锁操作(乐观锁:不管有没有问题 我先都不加锁 出了问题再去解决) @Test public void testVersion(){ User user = userMapper.selectById(1L); user.setName("a11"); user.setEmail("a11@qq.com"); userMapper.updateById(user); } //分页操作 @Test public void testPage(){ Page<User> page = new Page(1,3);//起始为1,当页有3条数据 userMapper.selectPage(page,null); page.getRecords().forEach(System.out::println); System.out.println(page.getTotal()); }