Mybatis-Plus新花样(一)

一. ActiveRecord

Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录

在MyBatisPlus中,AR模式即在实体类中封装了对数据库的访问,而不通过mapper类。

用法:

  1. 虽然操作数据库不通过mapper类,但需要编写mapper类并继承BaseMapper
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
  1. 实体类继承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

  1. 添加User
@Test
void testAdd() {
    User user = User.builder()
            .username("Coco")
            .password(encoder.encode("123456"))
            .enabled(true)
            .build();
    user.insert();
}

测试结果

数据库数据,成功插入

  1. 修改User
@Test
void testUpdate(){
	User user = User.builder()
			.id(5)
			.username("Coffee")
			.build();
	user.updateById();
}

测试结果

数据库数据,成功修改

  1. 查询用户

查询单个用户

@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 {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

测试结果

  1. 删除用户
@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: true
      logic-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;
}

三. 测试

  1. 查询

@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();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值