mybatis_plus

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());

       }

    }

}

おすすめ

転載: www.cnblogs.com/w410782823/p/11228216.html