1.1 MyBatisの-Plusは何ですか
プラスMyBatisの(MPと略す)がある MyBatisのを MyBatisのに基づいて強化ツール、のみ変更していないエンハンス開発を簡素化するために、効率性と健全性を高めます。
1.2なぜ学ぶMyBatisのプラス
私たちは、MyBatisのにこのフレームワークを学んできた、私たちは、あなたがデータベースのCRUD操作を実現することができ、MyBatisのゼロが達成特性に基づいて、抽象インタフェースのDAO層を定義する必要があります。
次の二つのインターフェース。
UserMapperインタフェース
パブリック インターフェイス UserMapper {
int型 deleteByPrimaryKey(ロングID); int型の挿入(ユーザーユーザー); リスト<ユーザ> SelectListの(); ユーザーselectByPrimaryKey(ロングID); } |
OrderMapperインタフェース
パブリック インターフェイス OrderMapper {
int型 deleteByPrimaryKey(ロングID); int型のインサート(受注オーダー)。 一覧<注文> SelectListの(); ユーザーselectByPrimaryKey(ロングID); } |
彼らは同様のCRUDメソッドのセットを定義します。上記の2つのビジネス・インターフェースでは、ことがわかりました。
機能的に同様のインターフェイスメソッドのこのグループは、我々が定義を繰り返す必要があり、ビジネスのより多くの種類、で。
どのようにこの問題を解決するには?
使用MyBatisのプラスツールは、我々は唯一の私たちは、共通のBaseMapper <T>インターフェイスを継承する抽象インタフェースを定義する必要があり、あなたは、データベースを操作するクラッド方法の共通セットを得ることができます!!!
MyBatisのプラスを使用する場合は、あなたも、任意のXMLマッピングファイルまたは注釈インタフェース方法、実際の実現のDAO層ゼロは必要ありません。
1.3 MyBatisのプラスの概要
開発者がより簡単かつ効率的にできるだけの機能強化の実現にMyBatisのに基づいてMyBatisのプラス、。
MyBatisの-Plusは、特性MyBatisのいずれかを変更しません!!!
2例を開始
2.1要件
MyBatisの-Plusは、ユーザーのためのCRUD操作を実現使用します。
2.2設定手順説明
(1)環境を構築(プロジェクトを作成し、パッケージをインポート)
(2)構成Mybaitsプラス(Springベースの実装)
(3)書き込みテストコード
2.3の設定ステップ
最初のステップ2.3.1:環境を構築
2.3.1.1前提
私たちは、データベース環境を作成しました:
table文の構築:
(TABLE `tb_user`をCREATE `id` BIGINT(20)NOT NULL COMMENT '主键ID'、 `name`ののVARCHAR(30)DEFAULT NULLのコメント '姓名'、 `Age` int型(11)DEFAULT NULLがCOMMENT '年齢' `Email`のVARCHAR(50)DEFAULT NULLコメントのメールボックス ' PRIMARY KEY( `id`) ) |
2.3.1.2説明
(1)MyBatisの-Plusは、別のjarパッケージを提供していませんが、Mavenの(またはのGradle)を介して、依存jarファイルを管理すること。このチュートリアルでは、プロジェクトをビルドするために使用するMavenを必要とします。
(2)MyBatisの-Plusはされに基づいて春のフレームワークの実装、使用MyBatisのプラス、あなたは関連する従属春をインポートする必要があります。
2.3.1.3作成プロジェクト
2.3.1.4は、依存関係を追加します
修改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.3.2 第二步:创建User实体类
说明:使用Mybatis-Plus可以不使用xml文件,而是基于一组注解来解决实体类和数据库表的映射问题。
@TableName(value="tb_user") |
指定对应的表,表名和类名一致时,可以省略value属性。 |
@TableId |
指定表的主键。Value属性指定表的主键字段,和属性名一致时,可以省略。Type指定主键的增长策略。 |
@TableField |
指定类的属性映射的表字段,名称一致时可以省略该注解。 |
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.3.3 第三步:创建UserMapper接口
说明:继承BaseMapper公共接口即可。
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.4 第四步: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.3.5 第五步:编写测试代码
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()); } }
//模糊查询 @Test public void selectByLike(){
EntityWrapper<User> wrapper = new EntityWrapper<>(); wrapper.like("name", "%张%");
List<User> users = userMapper.selectList(wrapper); for (User user : users) {
System.out.println("用户id:"+user.getId()+",用户姓名:"+user.getName()+",用户邮箱:"+user.getEmail()); } } } |