MyBatis Plus 入门使用详细教程

一、MyBatis Plus 介绍

MyBatis Plus 是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis Plus 的核心功能有:支持通用的 CRUD、代码生成器与条件构造器。

通用 CRUD:定义好 Mapper 接口后,只需要继承 BaseMapper<T> 接口即可获得通用的增删改查功能,无需编写任何接口方法与配置文件条件构造器:通过 EntityWrapper<T> (实体包装类),可以用于拼接 SQL 语句,并且支持排序、分组查询等复杂的 SQL代码生成器:支持一系列的策略配置与全局配置,比 MyBatis 的代码生成更好用

BaseMapper<T> 接口中通用的 CRUD 方法:

二、MyBatis Plus 集成 Spring

数据表结构

DROP TABLE IF EXISTS `tbl_employee`;

CREATE TABLE `tbl_employee` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`last_name` varchar(50) DEFAULT NULL,

`email` varchar(50) DEFAULT NULL,

`gender` char(1) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

pom 文件

<dependencies>

<!-- MP -->

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatis-plus</artifactId>

<version>2.3</version>

</dependency>

<!-- 测试 -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

</dependency>

<!-- 数据源 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.1.10</version>

</dependency>

<!-- 数据库驱动 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.39</version>

</dependency>

<!-- Spring 相关 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>4.3.9.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-orm</artifactId>

<version>4.3.9.RELEASE</version>

</dependency>

</dependencies>

MyBatis 全局配置文件 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 />

数据源 db.properties

jdbc.url=jdbc:mysql://localhost:3306/mp

jdbc.username=root

jdbc.password=1234

Spring 配置文件 applicationContext.xml

<!-- 数据源 -->

<context:property-placeholder location="classpath:db.properties"/>

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">

<property name="url" value="${jdbc.url}"></property>

<property name="username" value="${jdbc.username}"></property>

<property name="password" value="${jdbc.password}"></property>

</bean>

<!-- MP 提供的 MybatisSqlSessionFactoryBean -->

<bean id="sqlSessionFactoryBean"

class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">

<!-- 数据源 -->

<property name="dataSource" ref="dataSource"></property>

<!-- mybatis 全局配置文件 -->

<property name="configLocation" value="classpath:mybatis-config.xml"></property>

<!-- 别名处理 -->

<property name="typeAliasesPackage" value="com.jas.bean"></property>

<!-- 注入全局MP策略配置 -->

<property name="globalConfig" ref="globalConfiguration"></property>

<!-- 插件注册 -->

<property name="plugins">

<list>

<!-- 注册分页插件 -->

<bean class="com.baomidou.mybatisplus.plugins.PaginationInterceptor" />

<!-- 注入 SQL 性能分析插件,建议在开发环境中使用,可以在控制台查看 SQL 执行日志 -->

<bean class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">

<property name="maxTime" value="1000" />

<!--SQL 是否格式化 默认false-->

<property name="format" value="true" />

</bean>

</list>

</property>

</bean>

<!-- 定义 MybatisPlus 的全局策略配置-->

<bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">

<!-- 在 2.3 版本以后,dbColumnUnderline 默认值是 true -->

<property name="dbColumnUnderline" value="true"></property>

<!-- 全局的主键策略 -->

<property name="idType" value="0"></property>

<!-- 全局的表前缀策略配置 -->

<property name="tablePrefix" value="tbl_"></property>

</bean>

<!-- 配置mybatis 扫描mapper接口的路径 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.jas.mapper"></property>

</bean>

三、快速体验 MyBatis Plus

实体类 Employee

@TableName(value = "tbl_employee")

public class Employee {

@TableId(value = "id", type = IdType.AUTO)

private Integer id;

@TableField(value = "last_name")

private String lastName;

private String email;

private Integer gender;

private Integer age;

public Employee() {

super();

}

public Employee(Integer id, String lastName, String email, Integer gender, Integer age) {

this.id = id;

this.lastName = lastName;

this.email = email;

this.gender = gender;

this.age = age;

}

// 省略 set、get 与 toString() 方法

mapper 接口

/**

* 不定义任何接口方法

*/

public interface EmployeeMapper extends BaseMapper<Employee> {}

在测试类中生成测试的 mapper 对象

private ApplicationContext context =

new ClassPathXmlApplicationContext("classpath:applicationContext.xml");

private EmployeeMapper employeeMapper =

context.getBean("employeeMapper", EmployeeMapper.class);

简单查询测试

@Test

public void getEmpByIdTest() {

Employee employee = employeeMapper.selectById(1);

System.out.println(employee);

}

分页查询测试

@Test

public void getEmpByPage() {

Page<?> page = new Page<>(1, 5);

List<Employee> list = employeeMapper.selectPage(page, null);

System.out.println("总记录数:" + page.getTotal());

System.out.println("总页数" + page.getPages());

System.out.println(list);

}

条件构造器测试

@Test

public void getEmpByName() {

EntityWrapper<Employee> wrapper = new EntityWrapper<>();

// 'last_name' 与 'age' 对应数据库中的字段

wrapper.like("last_name", "张");

wrapper.eq("age", 20);

List<Employee> list = employeeMapper.selectList(wrapper);

System.out.println(list);

}

控制台输出的 SQL 分析日志

上面几个例子中,并没有在 EmployeeMapper 接口中定义任何方法,也没有在配置文件中编写 SQL 语句,而是通过继承 BaseMapper<T> 接口获得通用的的增删改查方法,复杂的 SQL 也可以使用条件构造器拼接。

通过这两种方式已经能够满足很多的开发需求了,不过复杂的业务需求还是要编写 SQL 语句的,流程和 MyBatis 一样。

PS:

完整的代码(mybatis-plus-demo 目录)传到了 GitHub,包括 SQL 表结构与数据文件,点我前往~

总结

以上是 MyBatis Plus 入门使用详细教程 的全部内容, 来源链接: utcz.com/z/336058.html

回到顶部