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

Mybatis-Plus介绍的更多相关文章

  1. mybatis入门介绍一

    首先介绍一下Mybatis是什么?mybatis是Java的持久层框架, JAVA操作数据库是通过jdbc来操作的,而mybatis是对jdbc的封装. 使用mybatis之后,开发者只需要关注sql ...

  2. mybatis入门介绍二

    相信看过我的上一篇博客的同学都已经对mybatis有一个初步的认识了.这篇博客主要是对mybatis的mapper代理做一下简单的介绍,希望能够帮助大家共同学习. 我的上一篇博客:mybatis入门介 ...

  3. 3.3.1 MyBatis框架介绍

    MyBatis框架介绍 1. 什么是框架 (1) 框架是偷懒的程序员将代码进行封装, 之后进行重复使用的过程. (2) 框架其实是一个半成品, 以连接数据库为例, 连接数据库使用的驱动, url, 用 ...

  4. MyBatis Generator介绍

    MyBatis Generator介绍 MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和 ...

  5. Mybatis(四):MyBatis核心组件介绍原理解析和源码解读

    Mybatis核心成员 Configuration        MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中 SqlSession ...

  6. MyBatis缓存介绍

    一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 相同提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存.其存储作用域为 Se ...

  7. MyBatis 逆向工程介绍

    1. 概念: 逆向工程就是根据数据库中对应的表在项目工程中生成相应的MyBatis代码(XXXMapper.java/XXXMapper.xml/Moudle(XXX)),逆向工程生成的代码可以进行简 ...

  8. Mybatis的介绍和基本使用

    巨人的肩膀 Mybatis的介绍和基本使用(1) (qq.com) Mybatis SQL映射文件详解(2) (qq.com)

  9. Mybatis类型转换介绍

    1.1     目录 1.2     建立TypeHandler 1.2.1    TypeHandler接口 1.2.2    BaseTypeHandler抽象类 1.3     注册TypeHa ...

  10. MyBatis框架介绍及其实操

    一.基本概念和介绍 数据持久化的概念 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称.例如,文件的存储.数据的读取等都是数据持久化操作.数据模型可以是任何数据 ...

随机推荐

  1. 2021.08.01 P4311 数字序列(左偏树)

    2021.08.01 P4311 数字序列(左偏树) [P4331 BalticOI 2004]Sequence 数字序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1 ...

  2. Sliding Window - 题解【单调队列】

    题面: An array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving fr ...

  3. 这3个免费PPT素材网站,一定要收藏

    制作PPT,这三个网站的素材绝对够用! 1.象刀设计 https://www.101dao.com 象刀设计里面有非常多PPT模板,这个网站也是主打PPT素材. 分类很清晰,需要什么风格的素材能快速找 ...

  4. Java之IO流技术详解

    何为IO? 首先,我们看看百度给出的解释. I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分. i是写入,Input的首字母.o是输出,Output的首字母. IO 也称为 ...

  5. 《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)

    1.简介 上一篇宏哥用PageFactory实现了POM,宏哥再介绍一下如果不用PageFactory如何实现POM. 2.项目实战 在这里宏哥以百度首页登录的例子,如果用POM实现,在测试脚本中实际 ...

  6. python自动化测试工具selenium使用指南

    概述 selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等.官网地址为:https://www.selenium.dev/.相对于另外一款web自动化测试工具QTP ...

  7. HTTP协议4.14

    测试开发学习笔记 一. Saas software as a service 软件即服务 Platform as a service 平台即服务 单体架构---垂直架构---面向服务架构---微服务架 ...

  8. Mybatis Plus之内置Mapper实践

    MyBatis Plus,作为对MyBatis的进一步增强,大大简化了我们的开发流程,提高了开发速度 配置 由于Mybatis Plus是建立在Mybatis之上的,所以其已经依赖了Mybatis,故 ...

  9. Java-GUI 编程之 JList、JComboBox实现列表框

    目录 JList.JComboBox实现列表框 简单列表框 不强制存储列表项的ListModel和ComboBoxModel 强制存储列表项的DefaultListModel和DefaultCombo ...

  10. java高级用法之:绑定CPU的线程Thread-Affinity

    目录 简介 Java Thread Affinity简介 AffinityLock的使用 使用API直接分配CPU 总结 简介 在现代计算机系统中,可以有多个CPU,每个CPU又可以有多核.为了充分利 ...