使用mybatis-plus

Posted 626zch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mybatis-plus相关的知识,希望对你有一定的参考价值。

Mybatis-Plus简介

1.1 什么是Mybatis-Plus

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

 

1.2 为什么要学习Mybatis-Plus

我们已经学习过Mybatis这个框架,我们只需要在dao层定义抽象接口,基于Mybatis零实现的特性,就可以实现对数据库的crud操作。

 

如下两个接口:

 

UserMapper接口

public interface UserMapper {

    int deleteByPrimaryKey(Long id);
    int insert(User user);
    List<User> selectList();
    User selectByPrimaryKey(Long id);
}

  

OrderMapper接口

 

public interface OrderMapper {

    int deleteByPrimaryKey(Long id);
    int insert(Order order);
    List<Order> selectList();
    User selectByPrimaryKey(Long id);
}

 

  

在上面两个业务接口中,我们发现:它们定义了一组类似的crud方法。

 

在业务类型比较多的时候,我们需要重复的定义这组功能类似的接口方法。

 

如何解决这个问题呢?

 

使用Mybatis-plus工具,我们只需要将我们定义的抽象接口,继承一个公用的BaseMapper<T>接口,就可以获得一组通用的crud方法,来操作数据库!!!

 

使用Mybatis-plus时,甚至都不需要任何的xml映射文件或者接口方法注解,真正的dao层零实现。

 

1.1 Mybatis-Plus小结

Mybatis-Plus只是在Mybatis的基础上,实现了功能增强,让开发更加简洁高效。

 

Mybatis-Plus并没有修改Mybatis的任何特性!!!

 

说明

 

1Mybatis-Plus并没有提供单独的jar包,而是通过Maven(或者gradle)来管理jar依赖。本教程需要使用Maven构建项目。

 

 

 

2Mybatis-Plus基于Spring框架实现的,因此使用Mybatis-Plus,必须导入Spring相关依赖。

 

修改pom.xml文件,添加Mybatis-Plus相关依赖:

<dependencies>
  		<dependency>
			<groupId>com.baomidou</groupId>
	        <artifactId>mybatis-plus</artifactId>
	        <version>2.3</version> 
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.3.16.RELEASE</version>
		</dependency>
		
		<!-- mysql -->
	    <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.40</version>
		</dependency>

		<!-- 连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.9</version>
		</dependency>
			
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.3.16.RELEASE</version>
		</dependency>
			
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>4.3.16.RELEASE</version>
			<scope>test</scope>
		</dependency>
			
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!-- 导入切面依赖包 -->
  		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>4.3.16.RELEASE</version>
		</dependency>
  </dependencies>

  

2.1 第二步:创建User实体类

 

package cn.gzsxt.mp.pojo;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;

@TableName("tb_user")
public class User {
	
	@TableId(value = "id", type = IdType.AUTO)
	private Long id; //bigint(20) NOT NULL COMMENT ‘主键ID‘,
	@TableField(value = "name")
	private String name; //varchar(30) DEFAULT NULL COMMENT ‘姓名‘,
	private String age; //int(11) DEFAULT NULL COMMENT ‘年龄‘,
	private String email; //varchar(50) DEFAULT NULL COMMENT ‘邮箱‘,
	
//补全get、set方法

}

 

  

2.2 第三步创建UserMapper接口

package cn.gzsxt.mp.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;

import cn.gzsxt.mp.pojo.User;

public interface UserMapper extends BaseMapper<User>{

}

 

  

2.3 第四步:Mybatis-Plus整合Spring

 

<?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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

	<context:component-scan base-package="cn.gzsxt.mp"/>

	<!-- 1、创建数据源 -->
	<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost:3306/mp"/>
		<property name="username" value="root"/>
		<property name="password" value="gzsxt"/>
		
		<property name="maxActive" value="20"/>
		<property name="minIdle" value="5"/>
	</bean>
	
	<!-- 2、mybatis-plus整合Spring 
		任何的数据库的框架,要使用spring的事物代理,必须使用spring提供的数据源,必须整合spring才可以使用
	-->
	<bean name="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
		<!-- 加载数据源 -->
		<property name="dataSource" ref="dataSource"/>
		
		<!-- 指定pojo目录 -->
		<property name="typeAliasesPackage" value="cn.gzsxt.mp.pojo"/>
		
		<!-- 配置mybatis-plus插件 -->
		<property name="plugins">
			<list>
			    <!-- 配置分页插件 -->
				<bean class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
				
				<!-- 配置拦截器属性 -->
				<bean class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">
					<!-- 配置sql响应时间,开发阶段方便做调优 -->
					<property name="maxTime" value="1000"/>
					
					<property name="format" value="true"/>
					
				</bean>
			</list>
		</property>
		
		<property name="globalConfig" ref="globalConfiguration"></property>
		
	</bean>

	<!-- 3、配置mybatis的动态代理 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
		
		<property name="basePackage" value="cn.gzsxt.mp.mapper"></property>
		
	</bean>

	<!-- 4、配置事物管理器 -->
	 <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	 		<property name="dataSource" ref="dataSource"></property>
	 </bean>
	
	<!-- 配置mybatis-plus全局属性 -->
	<!-- 定义 MybatisPlus 的全局策略配置-->
    <bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
        <!-- 在 2.3 版本以后,dbColumnUnderline 默认值是 true,即pojo属性开启驼峰标识 -->
        <property name="dbColumnUnderline" value="true"></property>
        <!-- 全局的主键策略 -->
        <!-- 
            AUTO->`0`("数据库ID自增")
             INPUT->`1`(用户输入ID")
            ID_WORKER->`2`("全局唯一ID")
            UUID->`3`("全局唯一ID")
        -->
        <property name="idType" value="0"></property>
        <!-- 全局的表前缀策略配置 -->
        <property name="tablePrefix" value="tb_"></property>
    </bean>

	
	<!-- 5、开启注解声明式事物 -->
	<tx:annotation-driven/>
</beans>

 

  

2.4第五步:编写测试代码

package cn.gzsxt.mp.test;

 

import java.util.List;

 

import org.apache.ibatis.session.RowBounds;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

 

import com.baomidou.mybatisplus.mapper.EntityWrapper;

 

import cn.gzsxt.mp.mapper.UserMapper;

import cn.gzsxt.mp.pojo.User;

 

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations={"classpath:spring-data.xml"})

@ComponentScan(basePackages={"cn.gzsxt.mp"})

public class UserMapperTEST {

 

@Autowired

private UserMapper userMapper;

 

//插入一条记录

@Test

public void insert(){

User user = new User();

user.setAge(18);

user.setEmail("[email protected]");

user.setName("张三");

 

userMapper.insert(user);

}

 

//根据id查询

@Test

public void selectById(){

User user = userMapper.selectById(1);

 

System.out.println("用户id"+user.getId()+",用户姓名:"+user.getName()+",用户邮箱:"+user.getEmail());

}

 

//根据用户名查找

@Test

public void selectByName(){

 

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

wrapper.eq("name", "张三");

 

List<User> users = userMapper.selectList(wrapper);

 

for (User user : users) {

System.out.println("用户id"+user.getId()+",用户姓名:"+user.getName()+",用户邮箱:"+user.getEmail());

}

}

 

//查询用户列表

@Test

public void selectAll(){

List<User> users = userMapper.selectList(null);

for (User user : users) {

System.out.println("用户id"+user.getId()+",用户姓名:"+user.getName()+",用户邮箱:"+user.getEmail());

}

}

 

//分页查询,第2页,每页3

@Test

public void selectAndPage(){

 

RowBounds rowBounds = new RowBounds((2-1)*3, 3);

 

List<User> users = userMapper.selectPage(rowBounds, null);

 

for (User user : users) {

System.out.println("用户id"+user.getId()+",用户姓名:"+user.getName()+",用户邮箱:"+user.getEmail());

}

}

  

 

 

 

以上是关于使用mybatis-plus的主要内容,如果未能解决你的问题,请参考以下文章

详解:MyBatis-Plus 代码生成器的使用

SpringBoot使用mybatis-plus+自动代码生成

Mybatis-plus 代码生成器的使用

mybatis-plus代码生成器使用

MyBatis-Plus逆向生成代码

MyBatis-Plus逆向生成代码