最快MyBatisPlus入门使用
笔者于2016年入Java,先后从事开发和教育行业,现就职于某供应链公司担任后端开发工程师。整理分享开发必备技术文档。
收藏等于学会,赶紧三连吧,如有问题请评论区留言或者私信哦!一、MyBatis-Plus介绍
1.1、概述
这个技术官网介绍已经非常详细MyBatis-Plus,MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。
1.2、特征
无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题支持 XML 热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )支持关键词自动转义:支持数据库关键词(order、key......)自动转义,还可自定义关键词内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作内置 Sql 注入剥离器:支持 Sql 注入剥离,有效预防 Sql 注入攻击
1.3、框架结构
二、快速开始
2.1、技术背景
我在该案例中使用的是IDEA开发工具,使用的是ssm框架大家也可以使用springboot,数据库使用的是mysql,框架的搭建整合就不做演示了,不会的可以参考我之前的博客。
2.2、开搞
2.2.1、创建数据库
我们使用mybatis无疑是操作数据库,所以我们首先需要创建一个数据库和数据表,如下
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `pass` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
对应的插入语句
INSERT INTO user (id, name, pass) VALUES (1, "aa", "sss"); INSERT INTO user (id, name, pass) VALUES (2, "dd", "dd"); INSERT INTO user (id, name, pass) VALUES (3, "朱重八", "123"); INSERT INTO user (id, name, pass) VALUES (4, "朱五四", "123"); INSERT INTO user (id, name, pass) VALUES (5, "朱元璋", "123"); INSERT INTO user (id, name, pass) VALUES (6, "朱由检", "123");
2.2.2、创建工程
这里提供SpringMVC和SpringBpoot两种方式,我们使用IDEA创建一个Maven工程,主要修改pom.xml文件,spring与mybatis的整合文件
SpringMVC
1)pom.xml文件,引入mybatis-plus的依赖
com.baomidou mybatis-plus 3.1.1
注意:引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题
如果你是用的是springboot项目则添加以下启动器
com.baomidou mybatis-plus-boot-starter 3.1.1
2)整合文件
SpringMVC
配置 MapperScan
调整 SqlSessionFactory 为 MyBatis-Plus 的 SqlSessionFactory
SpringBoot配置
@SpringBootApplication @MapperScan("com.zhiyou100.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(QuickStartApplication.class, args); } }
以上就是使用mybatis-plus的配置文件的配置,接下来我们看看在代码中如何实现CRUD操作。
2.2.3、编码
1)实体类
package com.zhiyou100.pojo; import lombok.Data; import lombok.ToString; @Data @ToString public class User { private Integer id; private String name; private String pass; }
小结:这里实体类使用的是lombok插件,可以不用写getter,setter等方法
2)mapper类
package com.zhiyou100.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhiyou100.pojo.User; public interface User2Mapper extends BaseMapper { }
小结:我们创建Mapper类,继承BaseMapper,BaseMapper中定义了一些通用的CRUD方法,我们甚至可以不用写实体类的映射文件就可以完成一些简单的CRUD操作
BaseMapper源码如下,不难应该都能看懂,但是需要注意的是你的数据库的表名和字段名必须和实体类名和属性名一致 。
public interface BaseMapper extends Mapper { int insert(T entity); int deleteById(Serializable id); int deleteByMap(@Param("cm") Map columnMap); int delete(@Param("ew") Wrapper wrapper); int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList); int updateById(@Param("et") T entity); int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper); T selectById(Serializable id); List selectBatchIds(@Param("coll") Collection<? extends Serializable> idList); List selectByMap(@Param("cm") Map columnMap); T selectOne(@Param("ew") Wrapper queryWrapper); Integer selectCount(@Param("ew") Wrapper queryWrapper); List selectList(@Param("ew") Wrapper queryWrapper); List