由于MyBatis-Plus是在MyBatis的基础上只做增强不做改变,因此其与Spring的整合非常简单。只需把MyBatis的依赖换成MyBatis的依赖,再把sqlSessionFactory换成MyBatis-Plus的即可。下面让我们在Spring中快速集成Mybatis-Plus的具体操作:
-- 创建库 CREATE DATABASE mp; -- 使用库 USE mp; -- 创建表 CREATE TABLE tbl_employee( id INT(11) PRIMARY KEY AUTO_INCREMENT, last_name VARCHAR(50), email VARCHAR(50), gender CHAR(1), age int ); INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Tom','tom@jianshu.com',1,22); INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Jerry','jerry@jianshu.com',0,25); INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Black','black@jianshu.com',1,30); INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('White','white@jianshu.com',0,35); 复制代码
在自己的数据库中执行上面的sql。
2.1.1、我们在Idea里新建一个Maven父项目,用来管理之后我们所有模块的代码。在Idea中选择 File
→ New
→ Project
2.1.2、在弹出的页面中选择 maven
然后 Next
2.1.3、填写自己喜欢的 groupId
和 artifactId
,我这里填的是 com.demo.mybatis-plus
和 mybatis-plus-in-action
,填写完之后然后 Next
2.1.4、继续点击 Next
,如果所填路径不存在,Idea会提示是否穿件一个文件,点击 OK
即可
2.1.5、项目创建完毕后删除 src
文件夹,就得到了我们想要的空的父工程,如下图所示
核心依赖:
<!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>${mybatis.plus.version}</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> 复制代码
完整依赖:
<!-- 统一管理项目依赖版本 --> <properties> <mybatis.plus.version>3.2.0</mybatis.plus.version> <junit.version>4.12</junit.version> <log4j.version>1.2.17</log4j.version> <druid.version>1.1.20</druid.version> <mysql.version>5.1.48</mysql.version> <spring.version>5.2.0.RELEASE</spring.version> <lombok.version>1.18.10</lombok.version> </properties> <dependencies> <!-- mp 依赖 mybatis-plus 会自动维护 mybatis 以及 mybatis-spring 相关的依赖 Mybatis 及 Mybatis-Spring 依赖请勿加入项目配置,以免引起版本冲突!!!Mybatis-Plus 会自动帮你维护! --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>${mybatis.plus.version}</version> </dependency> <!--junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <!--lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> </dependencies> <!-- 设置JDK编译版本 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> 复制代码
2.3.1、我们在Idea里新建一个mp01模块,在Idea中选中当前项目 → New
→ Module
;填写artifactId,点击 Next
;确定 Module name
的名称,点击 Finish
完成
2.3.2、新建完成后的项目如下
2.3.3、添加实体类
在 mp01/src/main/java/com/mp/beans/Employee.java
路径下添加实体类 Employee.java
:
@Data @ToString public class Employee { private Integer id; private String lastName; private String email; private Integer gender; private Integer age; } 复制代码
2.3.4、修改mp01的pom.xml
<?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>mybatis-plus-in-action</artifactId> <groupId>com.demo.mybatis-plus</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>mp01</artifactId> <dependencies> <!-- mp 依赖 mybatis-plus 会自动维护mybatis 以及 mybatis-spring相关的依赖 Mybatis 及 Mybatis-Spring 依赖请勿加入项目配置,以免引起版本冲突!!!Mybatis-Plus 会自动帮你维护! --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>${mybatis.plus.version}</version> </dependency> <!--junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <!--lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> </dependencies> </project> 复制代码
注意:这里在mp01的pom.xml文件中不添加上述依赖之后项目也是能正常运行的,但是我们加上相关依赖,是为让项目的依赖更加清晰一些
2.3.5、在 mp01/src/main/resources
中添加配置文件:
Spring 配置文件—— applicationContext.xml
:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring" xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 数据源 --> <context:property-placeholder location="classpath:db.properties"/> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 事务管理器 --> <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 基于注解的事务管理 --> <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/> <!-- 配置 SqlSessionFactoryBean mybatis提供的:org.mybatis.spring.SqlSessionFactoryBean mybatis-plus提供的:com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean --> <bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> <!-- 数据源 --> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <!-- 别名处理 --> <property name="typeAliasesPackage" value="com.mp.beans"></property> </bean> <!-- 配置 mybatis 扫描 mapper 接口的路径 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.mp.mapper"></property> </bean> </beans> 复制代码
JDBC配置文件—— db.properties
:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=UTF-8&useSSL=false jdbc.username=root jdbc.password=123456 复制代码
日志文件—— log4j.xml
:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Encoding" value="UTF-8"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) /n"/> </layout> </appender> <logger name="java.sql"> <level value="debug"/> </logger> <logger name="org.apache.ibatis"> <level value="info"/> </logger> <root> <level value="debug"/> <appender-ref ref="STDOUT"/> </root> </log4j:configuration> 复制代码
mybatis-config.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> </configuration> 复制代码
注意:mybatis-plus与spring整合,所有mybatis-plus的大部分都写在spring的配置文件中,这里定义一个空的mybatis-config.xml即可
2.3.6、测试
在 mp01/src/test/java/com/mp/test/TestMp.java
路径下添加测试类 TestMp.java
:
public class TestMp { private ApplicationContext iocContext = new ClassPathXmlApplicationContext("applicationContext.xml"); @Test public void testEnvironment() throws Exception { DataSource ds = iocContext.getBean("dataSource", DataSource.class); Connection conn = ds.getConnection(); System.out.println(conn); } } 复制代码
运行 testEnvironment
方法后如果能看到 Connection
就证明我们的配置可以了。
完成后的项目结构如下:
综上,我们的 Spring
集成 mybatis-plus
的配置和环境搭建就完成了,下面我们就可以进入到下一节基本CRUD了。