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

MyBatisPlus笔记

原创
作者头像
Java鱼头
发布于 2022-11-30 13:41:16
发布于 2022-11-30 13:41:16
62110
代码可运行
举报
文章被收录于专栏: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 删除。

评论
登录后参与评论
1 条评论
热度
最新
笔记传送门:kdocs.cn/l/cgtkYcGAJdye
笔记传送门:kdocs.cn/l/cgtkYcGAJdye
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
BAT等大厂Android面试书单和知识点清单Java知识Android知识java设计模式知识算法和数据结构知识计算机系统知识数据库知识计算机网络知识Android开源项目知识
Java知识 java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比较厚,里面的例子也比较冗长。但是如果细细去翻阅并且把例子都敲一遍的话,那么我想你的java基础会变得非常扎实。 2.Effective java:很多人会把Thinking in java 和这本书进行比较,但是我觉得两本书的侧重点还是不同的,TIJ侧重的是java基础,而
何时夕
2018/05/02
1.2K0
周末再聊聊Java学习路线
我相信这些读者或多或少都有一些 Java 基础,但由于看不到全貌,学了一段时间很容易迷失。所以我在寻思着能不能写一个学习的地图或者路线,让读者能知道下一步该学什么,自己离大厂的 offer还有多远的距离。
Java3y
2020/12/31
7850
周末再聊聊Java学习路线
计算机科班Java开发好书推荐
这些书全部都是我看过的,大部分都至少读了一遍到两遍,且还整理了笔记,少部分是挑的重点章节看的。
乔戈里
2019/01/07
7810
共2600页!又一份神级的面试手册面世~
前两天有个小伙伴在后台留言,最近的面试越来越难了,尤其是技术面,考察得越来越细,越来越底层,庆幸的是最终顺利找到了工作。 一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识 比如
芋道源码
2022/06/29
9260
共2600页!又一份神级的面试手册面世~
八股文,吐了
现在计算机专业是越来越卷了,在 2016 年那会,我朋友说他去培训班培训了 6 个月,就能找到一份月薪近万的工作,培训的内容也不怎么难,就是语言基础=》框架=〉做几个项目,之后就能上岗干活了。
帅地
2022/01/13
1.2K0
八股文,吐了
Java学习必备书籍推荐终极版!
很早就想把书单更新一下了,昨晚加今天早上花了几个时间对之前的书单进行了分类和补充完善。虽是终极版,但一定还有很多不错的 Java 书籍我没有添加进去,会继续完善下去。希望这篇文章对你有帮助,不要再无书可看。
乔戈里
2019/05/13
1.6K0
给学妹的 Java 学习路线
大家好,这篇文章主要是讲解下如何自学 Java,这个问题有很多粉丝私信问过,今天又有直系学妹问我如何学习 Java?
武培轩
2020/04/21
5210
给学妹的 Java 学习路线
给Java程序猿们推荐一些值得一看的好书
本文介绍了如何利用Java编程实现一个简单的RESTful API,包括定义API端点和请求方法,处理请求和响应,以及使用Spring Boot和Kotlin构建Web应用程序。同时,还向读者推荐了一些值得阅读的书籍,以帮助读者进一步提高自己的Java编程技能。
Java后端工程师
2017/12/14
2.5K0
Linux C++ 后台开发:进BAT的学习路线
链接:C++ & Linux 后端开发入BAT学习路径 - 力扣(LeetCode)
GPT4算法工程师
2024/03/11
3930
Linux C++ 后台开发:进BAT的学习路线
BATJTMD,大厂招聘,都招什么样Java程序员?
最近总看到类似这样的问题,也有一些工作3年左右的小伙伴问小傅哥,该怎么进大厂。其实你说 Java 学多少可以找到工作,主要看你想在哪个城市找、找什么样的公司、找什么样的待遇。因你的要求高低不同,你遇到的面试要求也会随之改变。
小傅哥
2020/11/19
3.8K0
BATJTMD,大厂招聘,都招什么样Java程序员?
C++ & Linux后端进BAT的学习路线
C++,相对别的语言学习门槛会高一点,主要原因是学习路线不明确,没有像Java那么多资料。但「在大厂里」C++岗位不比java少多少。想介绍下自己学习C++的路线,以及自己的看书方式,供参考。Cpper雄起!!!
AI算法与图像处理
2021/03/13
2.3K0
Java Web和Java后端开发的学习路线
Web开发: 主要是Web开发相关的内容,包括HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及Mysql(数据库)相关的知识。它们的学习顺序应该是从前到后,因此最先学习的应该是HTML/CSS/JS(前端页面),这部分内容你可以去上面的那个runoob网站上找。
全栈程序员站长
2022/09/08
8400
Java工程师学习指南 中级篇
最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。
程序员黄小斜
2019/03/10
5710
《深入理解 Kotlin 协程》这书该怎么读?
鼠年进入了尾声,想想过去的这一年还是发生了很多事情:终于有了回家的高铁,可刚回家没几天就又匆匆踏上了返京的旅途;写了一本书;做了一次线下的大会分享;做了两次线上的分享;上线了一套课程;买了 * * *;在公司也终于起了一个跨平台(Android + Linux)的项目,体验了一把 Kotlin MPP 等等,话说我司今年的阳光有点儿刺眼啊 :)。想了想,这一年也过得挺充实。
bennyhuo
2021/03/03
1.1K2
《深入理解 Kotlin 协程》这书该怎么读?
牛逼!Java 从入门到精通,超全汇总版
其实学习 Java 学到什么程度算是精通,这个其实没有盖棺定论的,也不是说你拿个年薪几十万的 offer 就可以自诩精通了。另外,每当面试的时候简历上填个精通 offer 的家伙我就觉得很搞笑,没有几个熬得过开出门左拐的命运。但是我认为,如果市面上这些资料、书籍你都啃的差不多,你能在所有的 Java 程序员中跻身前 0.1% 的话,你就可以达到”精通” 这个阶段了,因为没人比你强了,你当然是精通了。
全栈程序员站长
2022/07/02
2.5K0
牛逼!Java 从入门到精通,超全汇总版
两个月拿到N个offer,看看我是如何做到的
前言: 北京-三年经验-Java,在金三银四这两个月期间(在五月初还去面试了几家,主要是三四月份期面试剧居多),我跳槽面试,前前后后我面试十五家公司,最终,成功拿到了offer。现在已经正常上班,所以,现在才有时间静下心来把前面两个多月的面试经历做一个总结,来聊聊当时我面试15家大厂的感受以及总结。(文章有点长,请读者耐心观看,谢谢~~~~) 面试经历 1、阿里面试 第一轮:电话初面 第二轮:技术面谈【技术职位尽量避免多谈管理上的工作】 第三轮:高管复试 第四轮:HR最后确认 一面:首先确认对阿里的意向度(
Java高级架构
2018/07/20
7340
寒冬也挡不住进大厂的决心,Android面试完整知识架构,面试需要掌握的都在这里!
年年寒冬,年年也挡不住一个Android程序员追求大厂的决心。想要进入大厂,我们需要掌握哪些知识点呢?这里,我为大家梳理了一个整体的知识架构。整体包括Java、Android、算法、网络等,并且我也在相应知识点下推荐了与该知识点相关的书籍与博客。希望大家阅读之后,能帮助大家完善与整理自己的知识体系。祝大家早日进入自己理想的公司~~
Android技术干货分享
2021/05/11
1.2K0
寒冬也挡不住进大厂的决心,Android面试完整知识架构,面试需要掌握的都在这里!
阿里技术专家耗时三天刷完《深入JVM虚拟机 第三版》是什么感觉
今天分享一个最近刷完的一本书《深入JVM虚拟机 第三版》,一共花了三天的时间刷完,我相信应该很多人还没看过,毕竟七百多页,坚持看完真不容易,在这里分享一下自己刷完的一些经验,以及怎么去刷这本书。
愿天堂没有BUG
2022/10/28
5430
阿里技术专家耗时三天刷完《深入JVM虚拟机 第三版》是什么感觉
《Java 面经手册》PDF,全书 417 页 11.5 万字,完稿&发版!
持续坚持原创输出,点击蓝字关注我吧 作者:小傅哥 博客:https://bugstack.cn ❝沉淀、分享、成长,让自己和他人都能有所收获!? ❞ 目录 一、前言 二、简介 1. 适合人群 2.
喜欢天文的pony站长
2021/03/05
1.9K0
《Java 面经手册》PDF,全书 417 页 11.5 万字,完稿&发版!
非科班渣渣的java校招
非科班渣渣的java校招 作者:看山跑不死马 链接:https://www.nowcoder.com/discuss/154825?type=2&order=3&pos=16&page=1 来源:牛客
牛客网
2019/05/05
9200
推荐阅读
相关推荐
BAT等大厂Android面试书单和知识点清单Java知识Android知识java设计模式知识算法和数据结构知识计算机系统知识数据库知识计算机网络知识Android开源项目知识
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档