在yml文件中配置:
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
CRUD扩展:
插入测试:
@Test
public void testInsert(){
User user =new User();
user.setName("Java");
user.setAge(11);
user.setEmail("2132333@qq.com");
int insert = userMapper.insert(user);
System.out.println(insert);
System.out.println(user);
}
发现id是一串很长的数字,数据库默认的id是全局唯一的
主键生成策略
默认: @TableId(type = IdType.ID_WORKER) 全局唯一id
雪花算法:
主键自增:
1.在实体类字段上增加@TableId(type = IdType.AUTO)
2.数据库中的字段一定要是自增
3.测试插入即可
public enum IdType {
AUTO(0), //自动增长id
NONE(1),//不设置主键
INPUT(2),//手动输入id
ID_WORKER(3),//默认全局唯一的id
UUID(4),//全局的id uuid
ID_WORKER_STR(5); //ID_WORKER 字符串表示法
}
更新操作:
@Test
public void testUpdate(){
User user = new User();
//通过条件自动拼接SQL
user.setId(2L);
user.setAge(16);
user.setName("dai");
//注意 里面传递的是一个对象而不是id
int i = userMapper.updateById(user);
}
所有的SQL都是自动帮你配置的
自动填充:
创建时间、修改时间
方式一:数据库级别
1.在表中新增字段 create_time,update_time
2.同步测试类:
3.测试即可
方式二:代码级别
1.删除数据库的默认值,更新操作
2.实体类字段上加上注解
//字段添加填充内容
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
3.编写处理器处理结果
package com.dai.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 insertFill..........");
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
//更新时填充策略
@Override
public void updateFill(MetaObject metaObject) {
log.info("start updateFill..........");
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
4.测试观察结果即可