Mybatis-Plus学习2 IService+ServiceImpl

文章介绍了在Java开发中,使用Mybatis-Plus框架时,Service层和Impl层的泛型应用,以及如何处理主键生成策略,包括默认的雪花算法和自增策略。同时,提到了逻辑删除的实现,通过@TableLogic注解进行数据的逻辑标记删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

service层写法,继承ISerice,泛型为实体类对象

public interface UserService extends IService<User> {
}

impl层写法,继承ServiceImpl,实现service,泛型为Mapper对象+实体类对象

public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
    @Test
    public void testGetCount() {
        //查询数据库总记录数
        long count = userService.count();
        //SELECT COUNT( * ) AS total FROM user
        System.out.println("总记录数 = " + count);
    }

    @Test
    public void testInsertMore() {
        //批量添加(调mapper层方法,循环10次单独添加实现批量添加)
        List<User> list = new ArrayList<>();
        for (int i = 1; i <= 10; i ++) {
            User user = new User();
            user.setName("wfc" + i);
            user.setAge(20 + i);
            list.add(user);
        }
        boolean result = userService.saveBatch(list);
        System.out.println("result = " + result);
    }
@TableId注解可以指定主键
    @TableId(value = "uid")
    private Long id;

Mybatis-Plus默认使用的主键算法是雪花算法,通过TableId的type属性可以更改算法策略

    // 自增策略(需要同步修改表结构中的字段为自增才可以实现)
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

如果主动设置了主键,则使用自己设置的主键

@TableField指定属性对应的数据库字段名

@TableLogic表示逻辑删除字段,删除数据时变更字段值由0到1,并不会真正删除数据

select的时候也不会返回is_deleted = 1的数据

UPDATE user SET is_deleted=1 WHERE id IN ( ? , ? , ? ) AND is_deleted=0

// 配置文件中配置TableLogic
mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: delFlag # 全局逻辑删除的实体字段名,也可实体类字段上加上@TableLogic注解
      logic-delete-value: 1 # 逻辑已删除值
      logic-not-delete-value: 0 # 逻辑未删除值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值