MyBatis-Plus提供的默认Service能力

MyBatis-Plus不仅有BaseMapper接口提供给基本的CRUD功能,还在Service层提供了IService接口,扩展了BaseMapper的功能。

官方文档 传送门

下面,详细整理IService<T>提供的能力。

插入一条记录

    default boolean save(T entity) {
   
        return SqlHelper.retBool(getBaseMapper().insert(entity));
    }

例子:

    @Test
    public void testSave() {
   
        UserEntity user = new UserEntity();
        user.setId(7L);
        user.setName("Mike");
        user.setAge(32);
        user.setEmail("[email protected]");
        boolean ret = userService.save(user);
        System.out.println(ret);
    }

控制台打印出来的日志:

==>  Preparing: INSERT INTO tb_user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )
==> Parameters: 7(Long), Mike(String), 32(Integer), [email protected](String)
<==    Updates: 1

批量插入一批记录

    @Transactional(rollbackFor = Exception.class)
    default boolean saveBatch(Collection<T> entityList) {
   
        return saveBatch(entityList, DEFAULT_BATCH_SIZE);
    }
boolean saveBatch(Collection<T> entityList, int batchSize);

例子:

    @Test
    public void testSaveBatch() {
   
        UserEntity user1 = new UserEntity();
        user1.setId(7L);
        user1.setName("Mike");
        user1.setAge(32);
        user1.setEmail("[email protected]");
        UserEntity user2 = new UserEntity();
        user2.setId(8L);
        user2.setName("Tank");
        user2.setAge(30);
        user2.setEmail("[email protected]");
        boolean ret = userService.saveBatch(Arrays.asList(user1, user2));
        System.out.println(ret);
    }

控制台打印出来的日志:

==>  Preparing: INSERT INTO tb_user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )
==> Parameters: 7(Long), Mike(String), 32(Integer), [email protected](String)
==> Parameters: 8(Long), Tank(String), 30(Integer), [email protected](String)

批量插入或更新记录

    @Transactional(rollbackFor = Exception.class)
    default boolean saveOrUpdateBatch(Collection<T> entityList) {
   
        return saveOrUpdateBatch(entityList, DEFAULT_BATCH_SIZE);
    }
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

根据主键ID判断是否存在,如果不存在则新增,如果存在则更新(更新不为null的属性)。

例子:

    @Test
    public void testSaveOrUpdateBatch() {
   
        UserEntity user1 = new UserEntity();
        user1.setId(9L);
        user1.setName("Adele");
        user1.setAge(28);
        user1.setEmail("[email protected]");
        UserEntity user2 = new UserEntity();
        user2.setId(8L);
        user2.setAge(29);
        user2.setEmail("[email protected]");
        boolean ret = userService.saveOrUpdateBatch(Arrays.asList(user1, user2));
        System.out.println(ret);
    }

控制台打印出来的日志:

==>  Preparing: SELECT id,name,age,email FROM tb_user WHERE id=?
==> Parameters: 9(Long)
<==      Total: 0
==>  Preparing: INSERT INTO tb_user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )
==> Parameters: 9(Long), Adele(String), 28(Integer), [email protected](String)
==>  Preparing: SELECT id,name,age,em
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值