2.3 改(update)
根据主键id修改(updateById)
@Test public void updateByIdTest() { User user = new User(); user.setId(4L); user.setName("张三"); user.setAge(20); // UPDATE user SET name=?, age=? WHERE id=? int result = mapper.updateById(user); System.out.println("受影响的行数: " + result); }
2.4 查(select)
根据主键id查找一条记录(selectById)
@Test public void selectTest() { // SELECT id,name,age,email FROM user WHERE id=? User user = mapper.selectById(4L); System.out.println("查询结果为:" + user); }
根据主键id查找多条记录(selectBatchIds)
@Test public void selectByBatchIdsTest() { List<Long> list = Arrays.asList(4L, 5L); // SELECT id,name,age,email FROM user WHERE id IN ( ? , ? ) List<User> users = mapper.selectBatchIds(list); System.out.print("查询结果为:"); users.forEach(System.out::println); }
多条件查询(selectByMap)
@Test public void selectByMapTest() { HashMap<String, Object> map = new HashMap<>(); map.put("name", "张三"); map.put("age", 20); // SELECT id,name,age,email FROM user WHERE name = ? AND age = ? List<User> users = mapper.selectByMap(map); System.out.print("查询结果为:"); users.forEach(System.out::println); }
查询表中所有的记录(selectList)
@Test public void selectListTest() { // SELECT id,name,age,email FROM user List<User> users = mapper.selectList(null); users.forEach(System.out::println); }
mapper层增删改查方法中的小知识点
⚠ 所有的增删改方法返回值都是受影响的行(记录)数
⚠ 以上都是单表的简单增删改查操作,如果这些功能无法满足你的需求,可以自定义SQL。可以在默认的路径(resources文件夹下的mapper文件夹)下创建mapper映射文件,或者在别的地方创建映射文件使用配置文件指定(mybatis-plus.mapper-locations),其他的操作和mybatis一样(接口方法、映射文件、调用方法)
3 service层的CRUD方法
service层接口继承IService接口并传入需要操作的实体类泛型
public interface UserService extends IService<User> { }
service接口的实现类除了实现接口之外,还要继承ServiceImpl类并传入传泛型(mapper层接口,实体类),这样做的好处是还可以在实现类里实现自定义业务方法
@Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { }
3.1 批量添加或者更新
批量添加saveBatch
@Test public void saveBatchTest() { // INSERT INTO user ( id, name, age ) VALUES ( ?, ?, ? ) List<User> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setName("tom" + i); user.setAge(20 + i); list.add(user); } boolean b = userService.saveBatch(list); System.out.println(b); }
批量添加或者更新saveOrUpdateBatch
第二个方法既可以用于批量添加还可以皮力量更新,判断是批量添加还是更新的依据是:看传入的列表中实体类对象是否设置了id属性或者说这个id值在表中是否存在,如果设置了id且id在表中存在的话就是批量更新,如果不设置id属性或者表中没有这个字段值的话就是批量添加。简而言之,有则改无则添
// 批量修改(因为user对象设置的id属性在表中存在) @Test public void saveOrUpdateBatchTest() { // UPDATE user SET name=?, age=? WHERE id=? List<User> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setId(10L + i); user.setName("jack" + i); user.setAge(20 + i); list.add(user); } boolean b = userService.saveOrUpdateBatch(list); System.out.println(b); }
3.2 查询表中总记录数
@Test public void getCountTest() { // SELECT COUNT( * ) FROM user long count = userService.count(); System.out.println(count); }