Mybatis-Plus基本CRUD——通用Service

发布时间 2023-05-07 19:02:13作者: 学无止境,贵在当下

通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删 除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆。

MyBatis-Plus中有一个接口 IService和其实现类 ServiceImpl,封装了常见的业务层逻辑。

创建Service 接口和实现类

IUserService

/**
 *  IUserService继承IService模板提供的基础功能
 */
public interface IUserService extends IService<User> {
}

UserServiceImpl

/**
 * ServiceImpl实现了IService,提供了IService中基础功能的实现
 * 若ServiceImpl无法满足业务需求,则可以使用自定的UserService定义方法,并在实现类中实现
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}

测试查询记录数

@Resource
private IUserService userService;

@Test
public void testGetCount(){
    //SELECT COUNT( * ) FROM user
    long count = userService.count();
    System.out.println("总记录数:" + count);
}

测试批量插入

@Test
public void testSaveBatch(){
    // SQL长度有限制,海量数据插入单条SQL无法实行,
    // 因此MP将批量插入放在了通用Service中实现,而不是通用Mapper
    ArrayList<User> users = new ArrayList<>();
    for (int i = 0; i < 5; i++) {
        User user = new User();
        user.setName("ybc" + i);
        user.setAge(20 + i);
        users.add(user);
    }
    //SQL:INSERT INTO t_user ( username, age ) VALUES ( ?, ? )
    //==> Parameters: 1655161629217820674(Long), ybc0(String), 20(Integer)
    //==> Parameters: 1655161629297512450(Long), ybc1(String), 21(Integer)
    //==> Parameters: 1655161629297512451(Long), ybc2(String), 22(Integer)
    //==> Parameters: 1655161629297512452(Long), ybc3(String), 23(Integer)
    //==> Parameters: 1655161629297512453(Long), ybc4(String), 24(Integer)
    //执行了5次插入,批量插入其实是循环添加数据
    userService.saveBatch(users);
}