一. ActiveRecord
Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。
在MyBatisPlus中,AR模式即在实体类中封装了对数据库的访问,而不通过mapper类。
用法:
- 虽然操作数据库不通过mapper类,但需要编写mapper类并继承BaseMapper
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
- 实体类继承Model类,开启AR模式
@Data
@Builder
@TableName("`user`")
public class User extends Model<User> {@TableId(type = IdType.AUTO)private Integer id;private String username;private String password;private Boolean enabled;
}
测试crud
- 添加User
@Test
void testAdd() {User user = User.builder().username("Coco").password(encoder.encode("123456")).enabled(true).build();user.insert();
}
测试结果
数据库数据,成功插入
- 修改User
@Test
void testUpdate(){User user = User.builder().id(5).username("Coffee").build();user.updateById();
}
测试结果
数据库数据,成功修改
- 查询用户
查询单个用户
@Test
void testSelect(){User user = User.builder().id(5).build();user.selectById();
}
查询所有用户
@Test
void testSelect(){User user = User.builder().build();user.selectAll();
}
分页查询用户
@Test
void testPage(){User user = User.builder().build();Page<User> userPage = user.selectPage(new Page<User>(0, 2),new QueryWrapper<User>().orderByDesc("id"));userPage.getRecords().forEach(System.out::println);
}
别忘了引入分页插件
@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}
测试结果
- 删除用户
@Test
void testDelete(){User user = User.builder().id(5).build();user.deleteById();
}
二.逻辑删除
逻辑删除也就是在逻辑上将一条数据删除,使用一个字段来标识数据是否被删除的状态。
一. 全局配置
mybatis-plus:global-config:db-config:logic-delete-field: is_deleted #逻辑删除的字段logic-delete-value: truelogic-not-delete-value: false
二. 单个配置
需要添加TableLogic注解。
@Data
@Builder
@TableName("`user`")
@AllArgsConstructor
@RequiredArgsConstructor
public class User extends Model<User> {@TableId(type = IdType.AUTO)private Integer id;private String username;private String password;private Boolean enabled;@TableLogic(value = "false",delval = "true")private Boolean is_deleted;
}
三. 测试
- 查询
@Test
void testLogicDelete(){User user = User.builder().id(1).build();user.selectAll();
}
2. 删除
@Test
void testLogicDelete(){User user = User.builder().id(1).build();user.deleteById();
}