经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MyBatis » 查看文章
一文详解Mybatis-plus的介绍与使用
来源:jb51  时间:2022/7/19 11:03:20  对本文有异议

Mybatis-Plus简介

Mybatis-Plus 是 MyBatis 的一个增强工具,专门针对于传统MyBatis开发中sql需要手动进行映射配置繁琐缺点的一款框架技术,这款框架技术提供了十分丰富的api供开发者们使用,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 已经为我们封装好了一些 CRUD 方法,因此不需要再写 xml SQL语句 文件了,仅仅通过少量配置即可实现单表大部分的CRUD操作。使用时直接只需要调用这些方法就行。

Mybatis-Plus特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 XML 热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 支持关键词自动转义:支持数据库关键词(order、key…)自动转义,还可自定义关键词
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
  • 内置 Sql 注入剥离器:支持 Sql 注入剥离,有效预防 Sql 注入攻击

Mybatis-Plus实操

数据库相关配置

首先创建我们的数据库文件

  1. DROP TABLE IF EXISTS user;
  2. CREATE TABLE user
  3. (
  4. id BIGINT(20) NOT NULL COMMENT '主键ID',
  5. name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
  6. age INT(11) NULL DEFAULT NULL COMMENT '年龄',
  7. email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
  8. PRIMARY KEY (id)
  9. );

插入数据

  1. DELETE FROM user;
  2. INSERT INTO user (id, name, age, email) VALUES
  3. (1, 'Jone', 18, 'test1@baomidou.com'),
  4. (2, 'Jack', 20, 'test2@baomidou.com'),
  5. (3, 'Tom', 28, 'test3@baomidou.com'),
  6. (4, 'Sandy', 21, 'test4@baomidou.com'),
  7. (5, 'Billie', 24, 'test5@baomidou.com');

创建SpringBoot项目,并导入Mybatis-Plus,SQL的依赖,也可以导入Lombok用来简化实体类方法的书写。

  1. <!--mybatis-plus的依赖-->
  2. <dependency>
  3. <groupId>com.baomidou</groupId>
  4. <artifactId>mybatis-plus-boot-starter</artifactId>
  5. <version>3.4.2</version>
  6. </dependency>
  7. <!--mysql的依赖-->
  8. <dependency>
  9. <groupId>mysql</groupId>
  10. <artifactId>mysql-connector-java</artifactId>
  11. </dependency>
  12. <!--lombok用来简化实体类-->
  13. <dependency>
  14. <groupId>org.projectlombok</groupId>
  15. <artifactId>lombok</artifactId>
  16. </dependency>

在application.properties文件中配置相关信息

  1. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306user?serverTimezone=GMT%2B8
  3. spring.datasource.username=root
  4. spring.datasource.password=123456
  5.  
  6. # 打印日志信息
  7. mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

小项目运行配置

第一步:

数据库相关信息配置完成后,在 Spring Boot 启动类中添加 @MapperScan 注解,将Mapper的包引入启动类(也可以创建一个configuration类当做配置类),扫描 Mapper 文件夹。

第二步:

接着创建实体类

  1. @Data //有了lombok中的@Data注解,不必再写getter,setter,toString等方法
  2. public class User {
  3. private Long id;
  4. private String name;
  5. private Integer age;
  6. private String email;
  7. }

第三步:

创建包 mapper 编写Mapper 接口: UserMapper.java,让UserMapper继承BaseMapper即可。

  1. public interface UserMapper extends BaseMapper {
  2. }

第四步:

以上条件已经具备了小项目的运行,因此在测试类中编写方法运行。

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. @MapperScan("package com.mpdemo.mapper")
  4. public class MybatisPlusApplicationTests {
  5. @Autowired
  6. private UserMapper userMapper;
  7. @Test
  8. public void testSelectList() {
  9. //UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper
  10. //在里面需要填选择的限制,不填写就是无任何条件
  11. List<User> users = userMapper.selectList(null);
  12. users.forEach(System.out::println);
  13. }
  14. }

上面输出的结果如下:

User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)

由上文可见,在使用Mybatis时我们需要在XML编写SQL语句,但是在使用Myba-Plus时我们进需要调用里面封装的方法即可。

添加数据

  1. @Test
  2. public void insertUser(){
  3. System.out.println(("----- insert method test ------"));
  4. User user=new User();
  5. user.setName("wangWu");
  6. user.setId(8L);//实体类中的类型为Long类型,因此需要在后面带上L
  7. user.setAge(21);
  8. user.setEmail("wangWU@qq.com");
  9. int result = userMapper.insert(user);
  10. System.out.println(result);
  11. }

删除数据

删除单个数据,使用deleteById方法

  1. @Test
  2. public void testDelete(){
  3. int result=userMapper.deleteById(7L);
  4. System.out.println(result);
  5. }

删除多个数据,使用deleteBatchIds方法

  1. @Test
  2. public void testDeleteBatchIds(){
  3. int result=userMapper.deleteBatchIds(Arrays.asList(8L,1548613799622840321L));
  4. System.out.println(result);
  5. }

修改数据

  1. @Test
  2. public void updateUser(){
  3. User user=new User();
  4. user.setId(8L);
  5. user.setAge(20);
  6. int i = userMapper.updateById(user);
  7. System.out.println(i);
  8. }

查询数据

查询多个数据,使用selectBatchIds方法

  1. @Test
  2. public void SelectMore(){
  3. List<User> users = userMapper.selectBatchIds(Arrays.asList(1L, 2L, 3L));
  4. System.out.println(users);
  5. }

小结

Mybatis-Plus是Mybatis的加强版,从上文我们也可以看到,Plus方便了我们的开发,不用再去写XML文件,SQL语句,因此还是很值得学习的。另外,在实际项目中的使用中,还要看公司所用的是哪一个哦。

以上就是一文详解Mybatis-plus的介绍与使用的详细内容,更多关于Mybatis-plus使用的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号