Mybatis-Plus介绍

Mybatis-Plus概念
Mybatis-Plus介绍

官网https://mybatis-plus/https://mp.baomidou.com/

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

特性:
  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作

  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作

  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用

  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作


Mybatis-Plus快速入门

JDK:1.8

Maven

Mybatis-Plus:3.0

WARNING:引入Mybatis-plus之后,请不要再此引入Mybatis以及Mybatis-Spring,以避免因版本差异导致的问题!

数据库脚本

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
  id BIGINT(20) NOT NULL COMMENT '主键ID',
  name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
  age INT(11) NULL DEFAULT NULL COMMENT '年龄',
  email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (id)
);

数据库 Data 脚本:

DELETE FROM user;

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

maven依赖

<dependencies>
   <!--mybatis-plus插件依赖-->
  <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.4.0</version>
       </dependency>

   <!--mysql-->
   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.47</version>
   </dependency>

   <!--数据库连接池-->
   <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid</artifactId>
       <version>1.1.20</version>
   </dependency>

   <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <version>1.18.22</version>
   </dependency>

   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.13.2</version>
   </dependency>

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.30</version>
   </dependency>
</dependencies>

<build>
   <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-site-plugin</artifactId>
       </plugin>
   </plugins>
</build>

创建Model子模块

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
       <artifactId>Wsy-Mybatis-Plus</artifactId>
       <groupId>com.yun</groupId>
       <version>1.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>

   <artifactId>Wsy-Mybatis-Plus-simple</artifactId>

   <properties>
       <maven.compiler.source>15</maven.compiler.source>
       <maven.compiler.target>15</maven.compiler.target>
   </properties>

</project>

log4j.properties

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPatten=[%t] [%c]-[%p] %m%n
原生Mybatis实现查询User

1,编写文件

sqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

   <properties resource="jdbc.properties"></properties>

   <!--environments:运行环境-->
   <environments default="development">
       <environment id="development">
           <!--当前事务交由JDBC进行管理-->
           <transactionManager type="JDBC"></transactionManager>
           <!--当前使用mybatis提供的连接池-->
           <dataSource type="POOLED">
               <property name="driver" value="${jdbc.driver}"/>
               <property name="url" value="${jdbc.url}"/>
               <property name="username" value="${jdbc.username}"/>
               <property name="password" value="${jdbc.password}"/>
           </dataSource>
       </environment>
   </environments>

   <!--引入映射配置文件-->
   <mappers>
     <mapper resource="mapper/UserMapper.xml"></mapper>
   </mappers>

</configuration>

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1/zdy_mybatis
jdbc.username=root
jdbc.password=123456

2,User实体

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

   /** id */
   private Long id;

   /** name */
   private String name;

   /** age */
   private Integer age;

   /** email */
   private String email;
}

3,编写UserMapper接口

public interface UserMapper {

   /**
    * 查询所有用户
    * @return
    */
   List<User> getAll();
}

4,编写UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.yun.mapper.UserMapper">

   <!--select-->
   <select id="getAll" resultType="com.yun.pojo.User">
      select * from user
   </select>

</mapper>

5,测试

public static void main(String[] args) throws IOException {

       InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");

       SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

       SqlSession sqlSession = sqlSessionFactory.openSession();

       UserMapper mapper = sqlSession.getMapper(UserMapper.class);

       List<User> userList = mapper.getAll();

       userList.forEach(item -> {
           System.out.println(item);
      });

  }

运行结果报错!!!

Cause: java.io.IOException: Could not find resource mapper/UserMapper.xml

提示找不到xml配置文件,我们在sqlMapConfig.xml中修改一下引入映射配置文件

  <mappers>
     <package name="com.yun.mapper"/>
   </mappers>

然后在运行一下,运行结果如下

Created connection 895599632.
Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@3561c410]
==> Preparing: select * from user
==> Parameters:
<==      Total: 5
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+MP实现查询User

1,承接上面的代码,将UserMapper继承BaseMapper,将拥有了BaseMapper中的所有方法;

public interface UserMapper extends BaseMapper<User> {

}

2,使用MP中的MybatisSqlSessionFactoryBuilder进程构建;

 public static void main(String[] args) throws IOException {

       InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");

       SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(resourceAsStream);

       SqlSession sqlSession = sqlSessionFactory.openSession();

       UserMapper mapper = sqlSession.getMapper(UserMapper.class);

       List<User> userList = mapper.getAll();

       userList.forEach(item -> {
           System.out.println(item);
      });

  }

运行结果报错,提示java.lang.ClassNotFoundException: org.springframework.core.GenericTypeResolver经排查发现是jar包冲突了,然后检查pom依赖,发现mybatis-plusjar包引入依赖有误 这边修改一下为

<dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.4.0</version>
       </dependency>

重新运行代码.运行结果如下:

17:17:32.986 [main] DEBUG com.yun.mapper.UserMapper.getAll - ==>  Preparing: select * from user
17:17:33.040 [main] DEBUG com.yun.mapper.UserMapper.getAll - ==> Parameters:
17:17:33.134 [main] DEBUG com.yun.mapper.UserMapper.getAll - <==      Total: 5
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)

现在我们换成Mybatsi-Plus内嵌的方法:

public static void main(String[] args) throws IOException {

       InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");

       SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(resourceAsStream);

       SqlSession sqlSession = sqlSessionFactory.openSession();

       UserMapper mapper = sqlSession.getMapper(UserMapper.class);

       List<User> userList = mapper.selectList(null);

       userList.forEach(item -> {
           System.out.println(item);
      });

运行结果

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-Plus强大的特性!

最新文章

  1. Codeforces CF#628 Education 8 D. Magic Numbers
  2. 你不知道的HttpHandler相关知识
  3. C# 毕业证书打印《四》
  4. 【jQuery 冻结任意行列】冻结任意行和列的jQuery插件
  5. CLR via C#深解笔记五 - 事件
  6. LeetCode 341. Flatten Nested List Iterator
  7. less使用ch1--认识语法
  8. kendo ui grid选中行事件,获取combobox选择的值
  9. 各位情人节快乐, Python帮忙撒狗粮, 我连夜做了这个程序!
  10. Oracle创建表空间、用户以及给用户赋权
  11. ubuntu中git
  12. Numpy学习笔记(一)
  13. Mac下的Docker及Kubernetes(k8s)本地环境搭建与应用部署、管理界面kubernetes-dashboard
  14. WP8.1 在默认浏览器中打开url
  15. Grafana展示DNS解析延时
  16. markdown 语法备忘
  17. android入门学习-天气预报app(一)
  18. hashmap的遍历方法
  19. promise 格式
  20. 八 SocketChannel

热门文章

  1. QGIS 3.14插件开发——Win10系统PyCharm开发环境搭建四步走
  2. C/C++指针、函数、结构体、共用体
  3. 浏览器获取京东cookie
  4. 分享一下 Idea 的 scope 功能
  5. Yapi Docker 部署
  6. drools中then部分的写法
  7. 负载均衡之LVS的三种模式
  8. Three.js 打造缤纷夏日3D梦中情岛 &#127754;
  9. 理“ Druid 元数据”之乱
  10. 【原创】项目五w1r3s.v1.0