使用mybatis-plus
Posted 626zch
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mybatis-plus相关的知识,希望对你有一定的参考价值。
1 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的任何特性!!!
2 说明
(1)Mybatis-Plus并没有提供单独的jar包,而是通过Maven(或者gradle)来管理jar依赖。本教程需要使用Maven构建项目。
(2)Mybatis-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的主要内容,如果未能解决你的问题,请参考以下文章