Mybatis-Plus简介 

  1.1 什么是Mybatis-Plus

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

  1.2 为什么要学习Mybatis-Plus

      在业务类型比较多的时候,我们需要重复的定义功能类似的接口方法。使用Mybatis-plus工具,我们只需要将我们定义的抽象接口,继承一个公用的BaseMapper<T>接口,就可以获得一组通用的crud方法,来操作数据库!并且Mybatis-Plus只是在Mybatis的基础上,实现了功能增强,让开发更加简洁高效。Mybatis-Plus并没有修改Mybatis的任何特性!

入门示例

  说明

   (1)Mybatis-Plus并没有提供单独的jar包,而是通过Maven(或者gradle)来管理jar依赖。

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

    第一步:搭建环境

     前提

    已经创建好了数据库环境

     建表语句:

CREATE TABLE `tb_user` (

`id` bigint(20) NOT NULL COMMENT '主键ID',

`name` varchar(30) DEFAULT NULL COMMENT '姓名',

`age` int(11) DEFAULT NULL COMMENT '年龄',

`email` varchar(50) DEFAULT NULL COMMENT '邮箱',

PRIMARY KEY (`id`)

)

  1.创建一个maven项目

   2.修改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>

   第二步:创建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方法

}

   第三步创建UserMapper接口

package cn.gzsxt.mp.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;

import cn.gzsxt.mp.pojo.User;

public interface UserMapper extends BaseMapper<User>{

}

  

   第四步: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>

  第五步:编写测试代码

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("zhangsan@163.com");

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

}

}

}

Mybatis-Plus入门的更多相关文章

  1. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  2. MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  3. MyBatis学习总结(一)——MyBatis快速入门(转载)

    本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

  4. MyBatis入门学习教程-MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  5. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  6. 【转】MyBatis学习总结(一)——MyBatis快速入门

    [转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...

  7. mybatis快速入门(六)

    前面mybatis的入门程序基本上都写完了,就看大家的灵活运用了,今天来吧前面的整合一下封装一个公共的BaseDao 只需要把前面的改造下然后创建一个BaseDao的接口,其它的继承BaseDao接口 ...

  8. MyBatis学习总结-MyBatis快速入门的系列教程

    MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...

  9. MyBatis基础入门《二十》动态SQL(foreach)

    MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...

  10. MyBatis基础入门《十九》动态SQL(set,trim)

    MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...

随机推荐

  1. Delphi 项目配置选项

    打开项目设置窗口: 通过菜单:项目>选项 快捷键    :Shift+Ctrl+F11 Delphi编译器选项说明  Conditional defines 指定条件编译器指令中引用的符号. O ...

  2. Mysql 字符串指定位置插入空格

    UPDATE flow_data_243 SET data_15=CONCAT(LEFT(data_15,10),' ',RIGHT(data_15,LENGTH(data_15)-10)) WHER ...

  3. 转://从一条巨慢SQL看基于Oracle的SQL优化

    http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的内容是基于Oracle的SQL优化,以一条巨慢的SQL为例,从快速解读SQL执行计划.如何从 ...

  4. day20 hashlib、hmac、subprocess、configparser模块

    hashlib模块:加密 import hashlib# 基本使用cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8'))print(cipher.h ...

  5. CentOS7 升级 gvim 到 8.x 版本

    因为 CentOS7 在默认情况下,通过 yum 安装的 vim-X11.x86_64 版本为 7.x 版本,对 Youcompleteme 支持不好.故需要升级到 8.x 版本. 以下记录 gvim ...

  6. nginx 常见正则匹配符号表示

    1.^: 匹配字符串的开始位置: 2. $:匹配字符串的结束位置: 3..*: .匹配任意字符,*匹配数量0到正无穷: 4.\. 斜杠用来转义,\.匹配 . 特殊使用方法,记住记性了: 5.(值1|值 ...

  7. 网站通信协议升级到HTTPS&HTTP2

    为何要升级到HTTPS和HTTP2? http://baijiahao.baidu.com/s?id=1602041305989767011&wfr=spider&for=pc htt ...

  8. .NET 增加扩展方法

    声明:通过一个js的实例来告诉你C#也可以实现这样的效果. 在JS中是这样实现的: 你是否见过JS中给系统默认Array对象增加一个自定义查重方法contains 在没有给Array原型上增加cont ...

  9. springboot配置SSL自签名证书

    1.证书生成 每一个JDK或者JRE里都有一个工具,叫做:keytool,安装了jdk或jre之后,配置好JAVA环境之后,就可以直接在控制台使用该命令生成自签名证书: 在控制台输入: keytool ...

  10. sqlalchemy 外键

    建表 from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() from sqlalchemy ...