首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MyBatisPlus笔记

MyBatisPlus笔记

原创
作者头像
Java鱼头
发布于 2022-11-30 13:41:16
发布于 2022-11-30 13:41:16
62100
代码可运行
举报
文章被收录于专栏:Java-docJava-doc
运行总次数:0
代码可运行

CRUD操作

1.插入用户

先来看看插入用户的操作,在MyBatisPlus中给我们提供一个insert()方法来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 添加用户信息
     */
    @Test
    void addUser() {
        User user = new User(null, "zs", 18, "123@qq.com");
        int i = userMapper.insert(user);
        System.out.println("i = " + i);
    }

插入成功后生成的id是一长串数字:

注意:在MyBatisPlus中插入数据的时候,如果id为空,默认会通过雪花算法来生成id

2.更新用户

然后来看看MyBatisPlus中的更新操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 更新用户信息
     */
    @Test
    void updateUser() {
        User user = new User(6l, "zs", 20, "123@qq.com");
        int i = userMapper.updateById(user);
    }

3.删除用户

删除用户的方法在MyBatisPLUS中提供的有多个

3.1 根据id删除

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Test
    void deleteUser() {
        User user = new User(6l, "zs", 20, "123@qq.com");
        userMapper.deleteById(6l);
    }

3.2 批量删除

MyBatisPlus中也支持批量删除的操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 批量删除
     */
    @Test
    void deleteBathUser() {
        int i = userMapper.deleteBatchIds(Arrays.asList(1l, 2l, 3l, 4l));
        System.out.println("受影响的行数:" + i);
    }

3.3 通过Map删除

根据 columnMap 条件,删除记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 根据 columnMap 条件,删除记录
     */
    @Test
    void deleteMapUser() {
        Map<String,Object> map = new HashMap<>();
        map.put("age",18);
        map.put("name","tom");
        int i = userMapper.deleteByMap(map);
        System.out.println("受影响的行数:" + i);
    }

4.查询操作

4.1 根据id查询

首先我们可以根据id来查询单条记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Test
    void queryUserById() {
        User user = userMapper.selectById(1l);
        System.out.println(user);
    }

4.2 根据id批量查询

然后也可以通过类似于SQL语句中的in关键字来实现多id的查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Test
    void queryUserByBatchId() {
        List<User> users = userMapper.selectBatchIds(Arrays.asList(1l, 2l, 3l));
        users.forEach(System.out::println);
    }

4.3 通过Map查询

也可以把需要查询的字段条件封装到一个Map中来查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Test
    void queryUserByMap() {
        Map<String,Object> map = new HashMap<>();
        map.put("age",18);
        map.put("name","tom");
        List<User> users = userMapper.selectByMap(map);
        users.forEach(System.out::println);
    }

4.4 查询所有数据

也可以通过selectList方法来查询所有的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 查询用户信息
     */
    @Test
    void queryUser() {
        List<User> users = userMapper.selectList(null);
        for (User user : users) {
            System.out.println(user);
        }
    }

当然在selectList中需要我们传递进去一个Wrapper对象,这个是一个条件构造器,这个在后面会详细的讲解。

三、CRUD接口

官网地址:https://baomidou.com/pages/49cc81/#service-crud-%E6%8E%A5%E5%8F%A3

官网说明:

  • 通用 Service CRUD 封装IService(opens new window)接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,
  • 泛型 T 为任意实体对象
  • 建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
  • 对象 Wrapper 为 条件构造器

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

1.Service的使用

要使用CRUD的接口,那么我们自定义的Service接口需要继承IService接口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * User对应的Service接口
 * 要使用MyBatisPlus的Service完成CRUD操作,得继承IService
 */
public interface IUserService extends IService<User> {
}

对应的Service实现得继承ServiceImpl同时指定mapper和实体对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Service的实现类
 * 必须继承ServiceImpl 并且在泛型中指定 对应的Mapper和实体对象
 */
@Service
public class UserService extends ServiceImpl<UserMapper, User> implements IUserService {
}

2.查询操作

通过Service中提供的count方法可以查询总的记录数。get方法,List方法等

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Autowired
    private IUserService userService;
​
    @Test
    void getUserCount() {
        long count = userService.count();
        System.out.println("count = " + count);
    }

3.批量插入

在service中给我们提供了批量插入的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Test
    void saveBatchUser() {
        List<User> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User(null,"a"+i,10+i,"aaa@163.com");
            list.add(user);
        }
        // 批量插入
        userService.saveBatch(list);
        // batchSize:50
        // userService.saveBatch(list,50);
    }

还有saveOrUpdate等方法,可自行应用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验