3. 配置日志
我们所有的SQL现在是不可见的,我们需要看懂是怎么执行的
#配置日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
4. crud扩展
4.1 插入操作
@Test public void testinsert() { User user=new User(); user.setName("rangrang"); user.setAge(18); user.setEmail("2293557957@qq.com"); int result=userMapper.insert(user);//帮我们自动生成id System.out.println(result); System.out.println(user); }
4.2 主键生成策略
@TableId(type = IdType.AUTO)//当选择是AUTO的时候,必须要保证数据库中表的该字段也是自增的,否则会报错 private Long id;
/** * 数据库ID自增 */ AUTO(0), /** * 该类型为未设置主键类型 */ NONE(1), /** * 用户输入ID * 该类型可以通过自己注册自动填充插件进行填充 */ INPUT(2), /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */ /** * 全局唯一ID (idWorker) */ ID_WORKER(3), /** * 全局唯一ID (UUID) */ UUID(4), /** * 字符串全局唯一ID (idWorker 的字符串表示) */ ID_WORKER_STR(5);
4.3 修改操作
@Test public void testUpdate(){ User user=new User(); user.setId(5L); user.setName("关注公众号,谢谢"); //user.setAge(18); int i=userMapper.updateById(user); System.out.println(i); }
可以实现动态拼接SQL
4.4 自动填充
创建时间,修改时间这些操作一般是自动化完成
方式一:数据库级别
在表中设置create_time与update_time
同步实体类后再次测试插入方法
方式二:代码级别
删除之前的操作
在实体类的属性上添加注解
@TableField(fill = FieldFill.INSERT) private Data createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Data UpdateTime;
编写处理器来处理这个注解即可!
package com.rang.handler; 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; @Slf4j @Component //一定不要忘记将处理器添加到IOC容器之中 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); } }
编写完成之后我们去重新测试





