mybatisplus使用方法【推荐】mybatisplus教程

大家好,今天差别待遇和大家分享mybatisplus使用方法,mybatisplus教程经验,一起来分享数据,测试,数据库,插件,文件的实用技巧和分享内容,初学者们可以通过阅读这篇文章来获得对这个领域的更深入理解。

MyBatis-Plus 是 MyBatis 的第三方使用插件。

前两天有朋友留言说能不能写一下整合 MyBatis-Plus 的教程。

在这之前我对 MyBatis-Plus 其实了解不是很多,一般情况下也不太愿意使用第三方的组件。找时间了解了一下 MyBatis-Plus 发现还是国人出品的开源项目,并且在 Github 上有 5000 多个关注,说明在国内使用的用户已经不少。

这篇文章就给大家介绍一下,如何在 Spring Boot 中整合 MyBatis-Plus 使用 MyBatis。

MyBatis-Plus 介绍

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

官方愿景:成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

根据愿景甚至还设置了一个很酷的 Logo。

mybatisplus使用方法,mybatisplus教程

官网地址:https://mybatis.plus/,本文大部分内容参考自官网。

特性

官网说的特性太多了,挑了几个有特点的分享给大家。

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

快速上手

准备数据

我们首先设计一个这样的用户表,如下:

idnameageemail1neo18smile1@baomidou.com2keep36smile2@baomidou.com3pure28smile3@baomidou.com4smile21smile4@baomidou.com5it24smile5@baomidou.com

我们要创建两个 Sql 文件,以便项目启动的时候,将表结构和数据初始化到数据库。

表结构文件(schema-h2.sql)内容:

DROPTABLEIFEXISTSuser;CREATETABLEuser(idBIGINT(20)NOTNULLCOMMENT’主键ID’,nameVARCHAR(30)NULLDEFAULTNULLCOMMENT’姓名’,
ageINT(11)NULLDEFAULTNULLCOMMENT’年龄’,
emailVARCHAR(50)NULLDEFAULTNULLCOMMENT’邮箱’,
PRIMARYKEY(id)
);

表数据文件(data-h2.sql)内容:

INSERTINTOuser(id,name,age,email)VALUES(1,’neo’,18,’smile1@ityouknow.com’),
(2,’keep’,36,’smile2@ityouknow.com’),
(3,’pure’,28,’smile3@ityouknow.com’),
(4,’smile’,21,’smile4@ityouknow.com’),
(5,’it’,24,’smile5@ityouknow.com’);

在示例项目的 resources 目录下创建 db 文件夹,将两个文件放入其中。

添加依赖

添加相关依赖包,pom.xml 中的相关依赖内容如下:

org.projectlombok
lombok
true

com.baomidou
mybatis-plus-boot-starter
3.1.1

com.h2database
h2
runtime

org.springframework.boot
spring-boot-starter-test
test

lombok,帮忙省略掉 Get/Set 方法,具体可以参考这篇文章mybatis-plus-boot-starter,MyBatis Plus 的依赖包h2,本次测试我们使用内存数据库 h2 来演示。spring-boot-starter-test,Spring Boot 的测试包

配置文件

#DataSourceConfigspring:
datasource:
driver-class-name:org.h2.Driver
schema:classpath:db/schema-h2.sql
data:classpath:db/data-h2.sql
url:jdbc:h2:mem:test
username:root
password:test#LoggerConfiglogging:
level:
com.neo:debug

配置了 h2 数据库,已经项目的日志级别。配置 schema 和 data 后,项目启动时会根据配置的文件地址来执行数据。

业务代码

创建 MybatisPlusConfig 类,指定 Mapper 地址,启用分页功能。

@Configuration@MapperScan(“com.neo.mapper”)
publicclassMybatisPlusConfig{/**
*分页插件
*/
@Bean
publicPaginationInterceptorpaginationInterceptor(){returnnewPaginationInterceptor();
}
}

创建实体类 User

@DatapublicclassUser{privateLongid;privateStringname;privateIntegerage;privateStringemail;
}

@Data 为 lombok 语法,自动注入 getter/setter 方法。

接下来创建对象对于的 Mapper。

publicinterfaceUserMapperextendsBaseMapper{
}

以上业务代码就开发完成了,是不是很简单。

测试

创建 MyBatisPlusTest 类,注入上面创建的 UserMapper 类。

@RunWith(SpringRunner.class)@SpringBootTestpublicclassMyBatisPlusTest{@Autowired
privateUserMapperuserMapper;
}

测试查询单挑数据,并输出

@TestpublicvoidtestSelectOne(){
Useruser=userMapper.selectById(1L);
System.out.println(user);
}

测试添加数据

@TestpublicvoidtestInsert(){
Useruser=newUser();
user.setName(“微笑”);
user.setAge(3);
user.setEmail(“neo@tooool.org”);
assertThat(userMapper.insert(user)).isGreaterThan(0);//成功直接拿会写的ID
assertThat(user.getId()).isNotNull();
}

assertThat() 是 Assert 的一个精通方法,用来比对返回结果,包来自import static

org.assertj.core.api.Assertions.assertThat;。

测试删除数据

@TestpublicvoidtestDelete(){assertThat(userMapper.deleteById(3L)).isGreaterThan(0);assertThat(userMapper.delete(newQueryWrapper().lambda().eq(User::getName,”smile”))).isGreaterThan(0);
}

QueryWrapper 是 MyBatis-Plus 内部辅助查询类,可以使用 lambda 语法,也可以不使用。利用 QueryWrapper 类可以构建各种查询条件。

测试更新数据

@Test
publicvoidtestUpdate(){
Useruser=userMapper.selectById(2);
assertThat(user.getAge()).isEqualTo(36);
assertThat(user.getName()).isEqualTo(“keep”);

userMapper.update(
null,
Wrappers.lambdaUpdate().set(User::getEmail,”123@123″).eq(User::getId,2)
);
assertThat(userMapper.selectById(2).getEmail()).isEqualTo(“123@123”);
}

测试查询所有数据

@TestpublicvoidtestSelect(){
ListuserList=userMapper.selectList(null);
Assert.assertEquals(5,userList.size());
userList.forEach(System.out::println);
}

测试非分页查询

@TestpublicvoidtestPage(){
System.out.println(“—–baseMapper自带分页——“);
Pagepage=newPage(1,2);
IPageuserIPage=userMapper.selectPage(page,newQueryWrapper()
.gt(“age”,6));
assertThat(page).isSameAs(userIPage);
System.out.println(“总条数——>”+userIPage.getTotal());
System.out.println(“当前页数——>”+userIPage.getCurrent());
System.out.println(“当前每页显示数——>”+userIPage.getSize());
print(userIPage.getRecords());
System.out.println(“—–baseMapper自带分页——“);
}

查询大于 6 岁的用户,并且分页展示,每页两条数据,展示第一页。

总结

简单使用了一下
MyBatis-Plus 感觉是一款挺不错的 MyBatis 插件,使用 MyBatis-Plus 操作数据库确实可以少写一些代码,另外
MyBatis-Plus 的功能比较丰富,文中仅展示了常用的增删改查和分页查询,如果想进一步学习可以关注官网示例

今天的分享就到这里吧,下次再见!希望这些经验可以为你的工作提供参考,阅读完这篇mybatisplus使用方法【推荐】mybatisplus教程,如果想深入了解相关知识,可以多关注有戏ABC哦!

本文发布者:易生峰狂,不代表有戏ABC立场,转载请注明出处:https://www.youxiabc.com/p/11059.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jubao226688#126.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年6月7日 08:16
下一篇 2023年6月7日 08:19

相关推荐

  • 王者限时点券商城有哪些皮肤【要点讲解】王者限时点券怎么获得

    各位小伙伴好,今天闻柳想跟大家聊聊王者限时点券商城有哪些皮肤,王者限时点券怎么获得,接下来,让我们分享一些王者,皮肤,福利,玩家,上线的实用技巧和干货。不管你是谁,只要努力学习,这篇文章将对你学习这个领域提供很大的帮助。 王者荣耀的6周年的确令人印象深刻,是王者荣耀为数不多的真正给到了玩家福利的活动,去年6周年的限时点券活动做满就是白嫖一个传说皮肤,时间算下…

    2023年8月16日 攻略记录
  • 皇上吉祥2好玩吗「推荐」皇上吉祥2值得入手吗

    大家好,今天蜘蛛吐司给大家分享一些皇上吉祥2好玩吗,皇上吉祥2值得入手吗的经验,最近我在学习游戏,皇上,玩法,剧情,品质,今天来分享一些有用的技巧和内容。如果你是新手,这篇文章可以帮助你更好地理解这个领域。 由厦门点触科技倾力打造的H5游戏《皇上吉祥2》讲述了一代清帝朝政议事、率领麾下名臣开辟万世帝业的传奇一生。在游戏中,玩家摇身一变成为了登基即位的清朝新帝…

    2023年5月14日
  • 三国群英纪单机版手游玩法攻略 秒懂:三国群英纪单机版武将搭配

    大家好,今天英雄都孤独分享一些三国群英纪单机版手游玩法攻略,三国群英纪单机版武将搭配的经验和技巧,欢迎来到本次分享,我们将分享武将,智力,金钱,武器,城防相关的最新技巧和资讯。如果你正在学习这个领域,这篇文章将会是一个很好的起点。 三国群英传手游新手应该怎么玩呢?想必很多玩家们都很想知道吧,接下来就由安趣网小编为大家带来三国群英传手游中新手的玩法介绍吧。 搜…

    2023年4月19日
  • 元气骑士三武器天赋植物是什么「秒懂」元气骑士武器植物搭配大全

    朋友们好,欲望傍身精心准备了一些有关元气骑士三武器天赋植物是什么,元气骑士武器植物搭配大全的内容,赶快来看看随从,曼陀罗,大葱,藤蔓,树干相关的最新实用干货和技巧分享,通过我的总结和实践,我相信这篇文章对初学者将会很有帮助。 1.“火龙果树” 四天成熟,成熟后获得“火盾”,每天可收获一次。 循环使用。 2.“曼德拉草” 两天成熟,成熟后获得“毒盾”,每天可收…

    2023年4月29日 攻略记录
  • 风之灵在哪个地方【最新】风之灵的位置

    各位朋友们大家好,凶巴巴的怪兽整理了一些关于风之灵在哪个地方,风之灵的位置的内容,我们为大家准备了一些青色,方舟,后面,位置,灵位的游戏实用干货分享,我写下这篇文章是为了帮助那些刚开始学习这个领域的人。 风之灵的大概位置是在晨岛,但是具体哦位置很多玩家还是不清楚,大家要注意风之灵的光是青色的,可别和水之灵混淆了,至于具体位置,下面讯喵喵就为大家分享一下光遇遗…

    2023年9月24日
  • 黑石塔下层地图详解「新手易懂」黑石塔下层任务攻略

    小伙伴们你们好,今天最初的坚强来聊聊黑石塔下层地图详解,黑石塔下层任务攻略的相关话题,一起来分享下层,黑手,鲁尔,部落,猎手的实用技巧和分享内容,我写下这篇文章是为了帮助那些刚开始学习这个领域的人。 这座雄伟的堡垒一直深入黑石山的熔火地心之中,几个世纪来一直代表着黑铁部落实力。最近,黑龙奈法利安和他的子嗣夺取的堡垒的上层高塔并对矮人们发动了残酷的战争。龙族大…

    2023年7月8日 攻略记录