MP
+++
自己挑一些常用简单的功能,记录一下
ActiveRecord 活动记录
实体对象继承Model即可
@Data
public class User extends Model<User> {
private Long id;
private String userName;
private String name;
private Integer age;
private String email;
private String password;
}
根据主键查询
@Test
public void testAR() {
User user = new User();
user.setId(1660582533819129857L);
User user2 = user.selectById();
log.info(String.valueOf(user2));
}
新增数据
@Test
void contextLoads() {
User user = new User();
user.setName("刘备").setAge(10).setPassword("123").setUserName("liubei").setEmail("liubei@163.com");
log.info("插入数据:{}",user.insert());
}
更新操作
@Test
void testAR1() {
new User().setId(1660582533819129857L).setAge(35).updateById();
}
删除操作
@Test
void test1() {
new User().setId(1660582533819129857L).deleteById();
}
条件查询
@Test
void test1() {
User user = new User();
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getAge, 35);
System.out.println(user.selectList(queryWrapper));
}
+++
自动填充
有些时候我们可能会有这样的需求,插入或者更新数据时,希望有些字段可以自动填充数据,比如密码、version 等。在MP中提供了这样的功能,可以实现自动填充。
/*INSERT UPDATE INSERT_UPDATE*/
@TableField(fill = FieldFill.INSERT) //插入数据时进行填充
private String password;
编写配置 元对象处理程序
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) { //密码默认值 123456
Object password = getFieldValByName("password", metaObject);
if (password == null) setFieldValByName("password", "123456", metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
//不做处理
}
}
可以看到默认密码为123456
+++
逻辑删除
开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓逻辑删除就是将数据标记为删除,而并非真正 的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免 数据被真正的删除。
ALTER TABLE `user`
ADD COLUMN `deleted` int(1) NULL DEFAULT 0 COMMENT '1代表删除,0代表未删除';
也修改User实体,增加deleted属性并且添加@TableLogic注解
@TableLogic
Integer deleted;
yml配置默认值
global-config:
db-config:
id-type: ASSIGN_ID
logic-delete-value: 1
logic-not-delete-value: 0
global-config:
db-config:
id-type: ASSIGN_ID
logic-delete-value: 1
logic-not-delete-value: 0