一、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.3 Mybatis-Plus小结

Mybatis-Plus只是在Mybatis的基础上,实现了功能增强,让开发更加简洁高效。
Mybatis-Plus并没有修改Mybatis的任何特性!!!

二、入门示例

2.1 需求

使用Mybatis-Plus实现对用户的crud操作。

2.2 配置步骤说明

(1)搭建环境(创建项目、导入包)
(2)配置Mybaits-Plus(基于Spring实现)
(3)编写测试代码

2.3 配置步骤

2.3.1 第一步:搭建环境

2.3.1.1 前提

已经创建好了数据库环境:

建表语句:

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`)
)

2.3.1.2 说明

(1)Mybatis-Plus并没有提供单独的jar包,而是通过Maven(或者gradle)来管理jar依赖。本教程需要使用Maven构建项目。
(2)Mybatis-Plus是基于Spring框架实现的,因此使用Mybatis-Plus,必须导入Spring相关依赖。

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="Index of /schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="Index of /schema/context"xmlns:tx="Index of /schema/tx"xsi:schemaLocation="Index of /schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsdIndex of /schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdIndex of /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 {@Autowiredprivate UserMapper userMapper;//插入一条记录@Testpublic void insert(){User user = new User();user.setAge(18);user.setEmail("zhangsan@163.com");user.setName("张三");userMapper.insert(user);}//根据id查询@Testpublic void selectById(){User user = userMapper.selectById(1);System.out.println("用户id:"+user.getId()+",用户姓名:"+user.getName()+",用户邮箱:"+user.getEmail());}//根据用户名查找@Testpublic 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());}}//查询用户列表@Testpublic void selectAll(){List<User> users = userMapper.selectList(null);for (User user : users) {System.out.println("用户id:"+user.getId()+",用户姓名:"+user.getName()+",用户邮箱:"+user.getEmail());}}//分页查询,第2页,每页3条@Testpublic 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());}}//模糊查询 @Testpublic 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 mapper配置 bigint_Mybatis-Plus入门相关推荐

  1. Mybatis快速配置-不适合入门

    Mybatis 文章目录 Mybatis 1.什么是Mybatis 2.快速入门 2.1.db.properties 2.2. log4j.properties 2.3.MybatisConfig.x ...

  2. mybatis mapper配置 bigint_SpringBoot基础架构1(SpringBoot、MyBatis-Plus与Thymeleaf)

    show me the code and talk to me,做的出来更要说的明白 我是布尔bl,你的支持是我分享的动力! 1 引入 使用 MyBatis-Plus 以及 thymeleaf 实现增 ...

  3. ORM框架之Mybatis(一)基于mapper配置增删改查

    Mybatis是现在非常流行的SSM框架中的M部分,Mybatis也是一个主流的ORM框架,在项目中用来处理持久层数据. 一.Mybatis框架介绍及使用 1.1 mybatis框架概述: mybat ...

  4. Spring Boot入门系列(六)Spring Boot如何使用Mybatis XML 配置版【附详细步骤】

    前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...

  5. MyBatis框架实现(04)读取mapper配置

    书接前文,我们写了一个架子,从SqlSessionFactory中获取SqlSession,但是中间还缺内容,下面我们要做的就是从配置文件中读取映射文件的配置.先来看一下现在的全局配置文件: 现在我们 ...

  6. mybatis mapper.xml dtd_全栈开发踩坑之路4-用MyBatis实现服务

    1.前言 上一篇文章介绍了如何设计后端的Mysql数据库:Alex Wang:全栈开发踩坑之路3-MySql数据库设计,本文介绍如何用MyBatis实现后端服务. 本后端项目的Github地址(撰写中 ...

  7. mybatis完整增删改查入门实例

    mybatis完整增删改查入门实例 编程步骤 ①创建Java工程. ②导入jar包. ③创建sqlMapConfig.xml配置文件,这是mybatis的入口. ④创建数据库,数据库表user_c,插 ...

  8. Mybatis generator 1.4.x 入门教程--转载

    Mybatis generator 1.4.x 入门教程 一.前言 ​ 最近因为公司开了新的项目,所以在构建骨架的时候发现mybatis最新的版本已经更新到了1.4.0了,尝试了一下,比起之前的myb ...

  9. 4、mybatis通过配置类Configuration 实现初始化

    对于初学者,如果进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...

最新文章

  1. C++实现判断两个单词是否为变位词
  2. ad20如何导入库_一文看懂如何使用(Py)Stan进行贝叶斯推理
  3. 三步骤定位Windows崩溃进程
  4. 未知的生成错误 因为没有预加载,所以无法解析程序集 GalaSoft.MvvmLight
  5. 几个实用的Servlet应用例子-入门、cookie、session及上传文件
  6. 网络设计分层设计的原理
  7. 微信授权 php josn,php怎么获取微信多客服json数据
  8. pycharm中两个.py文件相互调用和传递参数
  9. JAVA日期处理(Timestamp)
  10. 【源码】手把手教你用Python实现Vivado和ModelSim仿真自动化
  11. 客流量统计分析系统应用解决方案
  12. java实现MongoDB中unwind与match用法
  13. C++ 算术平均数及几何平均数
  14. .[转] 家里有娃娃的请注意,终于把儿歌凑齐了!! 儿歌大全
  15. RabbitMQ(6)-Spring AMQP,Spring集成RabbitMQ
  16. java毕业生设计在线点餐系统计算机源码+系统+mysql+调试部署+lw
  17. 买菜App综合服务水平排行:盒马、多点、每日优鲜排前三
  18. ajax的跨域和请求——详解
  19. 【Raw use of parameterized class ‘xxx‘ 】
  20. CTF之懵懂时期系列---后台登录

热门文章

  1. 【FLink】Flink 消费 kafka 消费组 死掉 Marking the coordinator dead for group 造成数据重复消费
  2. 【Elasticsearch】elasticsearch 常用 API 介绍
  3. 10-10-030-简介-Kafka之数据存储
  4. Spring Boot : SpringApplicationRunListener
  5. Oracle数据库ORA-00942: 表或视图不存在的问题
  6. 02=windows下安装PostgreSQL(The database cluster initialisation failed)
  7. Spring Boot和SSM本质上的区别
  8. RabbitMQ实现多系统间的分布式事务,保证数据一致性
  9. 面试官:Spring创建好的单例对象存在线程安全问题吗?
  10. Java中七个潜在的内存泄露风险,你知道几个?