MybatisPlus3整合
Mybatis-Plus简介
Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段,无入侵全方位 ORM 辅助层让您拥有更多时间陪家人。
Mybatis-Plus特性
- 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性
- 依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring
- 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
- 预防Sql注入:内置 Sql 注入剥离器,有效预防Sql注入攻击
- 通用CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
- 多种主键策略:支持多达4种主键策略(内含分布式唯一ID生成器),可自由配置,完美解决主键问题
- 支持热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动
- 支持ActiveRecord:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作
- 支持代码生成:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用(P.S. 比 Mybatis 官方的 Generator 更加强大!)
- 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 支持关键词自动转义:支持数据库关键词(order、key…)自动转义,还可自定义关键词
- 内置分页插件:基于 Mybatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询
- 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询
- 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,预防误操作
官网
http://mp.baomidou.com/
https://github.com/baomidou/mybatis-plus
为什么有这个入门手册
- 【v1】
目前最新版本:3.0 alpha/beta,升级 JDK 8 + 优化性能 Wrapper 支持 lambda 语法等等, Wrapper 也更改为 QueryWrapper和UpdateWrapper,网上的攻略已经不行了,这里提供一个新版本的入门采坑手册,并附上spring-cloud-study-mybatisplus开源学习项目。那么教程开始了。 - 【v2】
目前3.0已经进入正式阶段3.0.5,官方文档也陆续完善
maven的pom.xml配置
3.0.5之后,在SpringBoot2的包引入后,只需要这样一个包就搞定了。
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.5</version>
</dependency>
application.yml应用配置
3.0.5之后,无需额外的配置,只需要一句@MapperScan("com.xxxx.xxx.mapper")
即可开启Mybatis-Plus。以下配置为常规配置而已,仅供参考。
server:port: 3333servlet:context-path: /mybatisplus
tomcat:remote-ip-header: x-forward-foruri-encoding: UTF-8max-threads: 10background-processor-delay: 30
spring:http:encoding:force: truecharset: UTF-8application:name: spring-cloud-study-mybatisplusfreemarker:request-context-attribute: req#prefix: /templates/suffix: .htmlcontent-type: text/htmlenabled: truecache: falsecharset: UTF-8allow-request-override: falseexpose-request-attributes: trueexpose-session-attributes: trueexpose-spring-macro-helpers: true#template-loader-path: classpath:/templates/datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.jdbc.Driverdriver-class-name: com.mysql.jdbc.Driverplatform: mysqlurl: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: rootinitialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsefilters: stat,wall,log4j
Entity
推荐用我写的生成器,用sql语句生成实体类,而且最好用lombok简化setget http://java.bejson.com/generator
Mapper
Mapper只需要extends BaseMapper<T>
就可以完美实现增删改查等一系列操作,非常方便
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User>{
}
这里Entity省略setter和getter方法,可以用lombok的@Data代替
@Data
public class User implements Serializable {private static final long serialVersionUID = 1L;
private int id;private String userId;private String userName;private String passWord;private String name;private String tell;private int status;
}
Controller控制器
这里随便写个init方法和find方法,init就不用说了,初始化一些数据进去,find使用了QueryWrapper构造器,很方便。
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserMapper userMapper;
@GetMapping("/init")
public ApiReturnObject init(){List<User> userList=new ArrayList<User>();for (int i = 0; i < 10; i++) {int n=RandomUtil.randomInt(10000,99999)+i;User user=new User();user.setId(n);user.setName(n+"");user.setPassWord(n+"");user.setStatus(1);user.setUserId(n+"");user.setUserName(n+"");userMapper.insert(user);userList.add(user);user=null;}return ApiReturnUtil.success(userList);
}@GetMapping("/find")
public ApiReturnObject find(){IPage<User> userList=userMapper.selectPage(new Page<User>(1, 10), new QueryWrapper<User>().like("name","1"));return ApiReturnUtil.success(userList.getRecords());
}
}
这里还放出一段实战语句,直接用QueryWrapper构造器模糊查询证书编码,这个构造器是mybatis-plus的一个精华,请用好
@RestController
public class CertContoller {@Autowiredprivate CertMapper certMapper;
@RequestMapping("/certCompanyDetail")
public Object certCompanyDetail(){return certMapper.selectOne(new QueryWrapper<Cert>().like("cert_num","EGAG-SAL05-201811XXXX"));
}
}
Postman测试
访问数据初始化 http://127.0.0.1:1111/mybatisplus/user/init
{"errorCode": "00","errorMessage": "success","returnObject": [{"id": 52585,"name": "52585","passWord": "52585","status": 1,"userId": "52585","userName": "52585"},{"id": 33432,"name": "33432","passWord": "33432","status": 1,"userId": "33432","userName": "33432"}。。。这里省略其他的]
}
访问构造器查询 http://127.0.0.1:3333/mybatisplus/user/find
{"errorCode": "00","errorMessage": "success","returnObject": [{"id": 41618,"name": "41618","passWord": "41618","status": 1,"userId": "41618","userName": "41618"},{"id": 17804,"name": "17804","passWord": "17804","status": 1,"userId": "17804","userName": "17804"}。。。省略其他包含1的]
}
QueryWrapper条件参数说明
查询方式 | 说明 |
---|---|
setSqlSelect | 设置 SELECT 查询字段 |
where |
WHERE 语句,拼接 + WHERE 条件
|
and |
AND 语句,拼接 + AND 字段=值
|
andNew(已失效) |
AND 语句,拼接 + AND (字段=值)
|
or |
OR 语句,拼接 + OR 字段=值
|
orNew(已失效) |
OR 语句,拼接 + OR (字段=值)
|
eq | 等于= |
allEq | 基于 map 内容等于= |
ne | 不等于<> |
gt | 大于> |
ge | 大于等于>= |
lt | 小于< |
le | 小于等于<= |
like | 模糊查询 LIKE |
notLike | 模糊查询 NOT LIKE |
in | IN 查询 |
notIn | NOT IN 查询 |
isNull | NULL 值查询 |
isNotNull | IS NOT NULL |
groupBy | 分组 GROUP BY |
having | HAVING 关键词 |
orderBy | 排序 ORDER BY |
orderByAsc(有变化,中间有By) | ASC 排序 ORDER BY |
orderByDesc(有变化,中间有By) | DESC 排序 ORDER BY |
exists | EXISTS 条件语句 |
notExists | NOT EXISTS 条件语句 |
between | BETWEEN 条件语句 |
notBetween | NOT BETWEEN 条件语句 |
addFilter | 自由拼接 SQL |
last | 拼接在最后,例如:last("LIMIT 1") |
分页插件
已经在springboot注入mybatis的分页插件,直接使用Page参数<index,size>调用即可,简单方便。
IPage<User> userList=userMapper.selectPage(new Page<User>(1, 10), new QueryWrapper<User>().like("name","1"));
MybatisPlus3整合相关推荐
- Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:任务加油站 原文:toutiao.com/i6861 ...
- gradle官方文档_Spring Boot+Gradle+MyBatisPlus3.x搭建企业级的后台分离框架
你再主动一点点 我们就有故事了 原文:toutiao.com/i6861456496740270604 1.技术选型 解析器:FastJSON 开发工具:JDK1.8 .Gradle.IDEA 技 ...
- springboot2.3整合mybatis-plus3.3.2较为详细的教程
springboot2.3整合mybatis-plus3.3.2较为详细的教程 前言 项目环境 maven依赖如下 项目配置如下 建表语句如下 使用mybatis-plus代码生成插件生成代码 配置分 ...
- Springboot2.0从零开始搭建脚手架-初始化和整合MybatisPlus3.0+...
初始化springboot项目 添加web依赖,基于springboot2.1.3稳定版本 初始化spring boot项目地址 https://start.spring.io/ 包名:com.nqm ...
- SpringBoot整合MyBatis-Plus3.1详细教程
一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,即可快速进行 CRUD 操作,从而 ...
- mybatis jar包_springboot2整合mybatis-plus3踩到的坑
前言 最近在进行项目重构,在架构师的建议下,就把项目中mybatis切换成mybatis-plus.因为mybatis-plus在mybatis的基础上只做增强不做改变,因此切换的成本很低,就只需改j ...
- bilibili在线解析接口_SpringBoot+Gradle+MyBatisPlus3.x + Swagger搭建在线和离线API
1.简要说明 本文章是搭建SpringBoot + Gradle + MyBatisPlus3.x + SwaggerBootstrapUi整合在线和离线API 本框架以Java语言实现为主,基于Sp ...
- ShardingSphere-JDBC5.2整合mybatisPlus入门
一.分库分表技术 当单表的数据量非常大,已经达到了数据库的IO瓶颈时,即使是尝试了加索引,读写分离等方案之后,单表的查询速度还是非常慢.这时候就可以考虑使用水平分表的方案,即通过把单表的数据拆分存放到 ...
- springboot整合mybatis-plus完整案例
1.mybatis-plus,plus意思为插件,只在原来的基础上增强不做改变,只要进行简单的配置就可以对单表进行crud,还提供了强大的条件构造器wrapper以及代码生成器等.如下为springb ...
最新文章
- R语言do.call函数和call函数实战
- Python Django CBV下的通用视图函数
- 电脑销售渠道_双十一遇上英雄联盟S10,苏宁游戏装备销售增长258%
- CF 1174 D. Ehab and the Expected XOR Problem 异或技巧
- python 32的值_示例解读 Python 2 和 Python 3 之间的主要差异
- java web 应用技术与案例教程_《Java Web应用开发技术与案例教程》怎么样_目录_pdf在线阅读 - 课课家教育...
- 洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)
- ORA-02291: 违反完整约束条件 …… - 未找到父项关键字
- Oracle 11g行字段拼接WMSYS.WM_CONCAT问题Not A LOB
- IOS 公共类-数字处理
- python代码怎么练_自己练习的Python代码(1)
- CSS学习笔记:transition
- MybatisPlus
- 计算机系统基础袁春风试题,计算机系统基础习题解答与教学指导
- datedif函数(datedif函数在哪里找)
- fastlane二开java_Fastlane 使用手册(二)
- 从TikTok功能优化,抓住直播带货机遇
- css textarea行数_超级简单:在一个TextArea中如何限制行数和字符数
- 传感器实训心得体会_传感器心得体会
- EDB数据库创建流程指南