原創(chuàng)聲明
本文首發(fā)于頭條號(hào)【Happyjava】敲街。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的個(gè)人博客:http://blog.happyjava.cn茫因。歡迎轉(zhuǎn)載,但須保留此段聲明橡卤。
mybatis plus簡(jiǎn)介
來(lái)自官方對(duì)于mybatis plus的介紹:MyBatis-Plus(簡(jiǎn)稱 MP)是一個(gè) MyBatis 的增強(qiáng)工具最盅,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)什黑、提高效率而生崎淳。其支持以下特性:
- 無(wú)侵入:只做增強(qiáng)不做改變,引入它不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響愕把,如絲般順滑
- 損耗小:?jiǎn)?dòng)即會(huì)自動(dòng)注入基本 CURD拣凹,性能基本無(wú)損耗,直接面向?qū)ο蟛僮?/li>
- 強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper恨豁、通用 Service嚣镜,僅僅通過(guò)少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作,更有強(qiáng)大的條件構(gòu)造器橘蜜,滿足各類使用需求
- 支持 Lambda 形式調(diào)用:通過(guò) Lambda 表達(dá)式菊匿,方便的編寫各類查詢條件,無(wú)需再擔(dān)心字段寫錯(cuò)
- 支持主鍵自動(dòng)生成:支持多達(dá) 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence)计福,可自由配置捧请,完美解決主鍵問(wèn)題
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實(shí)體類只需繼承 Model 類即可進(jìn)行強(qiáng)大的 CRUD 操作
- 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 棒搜、 Model 疹蛉、 Service 、 Controller 層代碼力麸,支持模板引擎可款,更有超多自定義配置等您來(lái)使用
- 內(nèi)置分頁(yè)插件:基于 MyBatis 物理分頁(yè)育韩,開發(fā)者無(wú)需關(guān)心具體操作,配置好插件之后闺鲸,寫分頁(yè)等同于普通 List 查詢
- 分頁(yè)插件支持多種數(shù)據(jù)庫(kù):支持 MySQL筋讨、MariaDB、Oracle摸恍、DB2悉罕、H2、HSQL立镶、SQLite壁袄、Postgre、SQLServer2005媚媒、SQLServer 等多種數(shù)據(jù)庫(kù)
- 內(nèi)置性能分析插件:可輸出 Sql 語(yǔ)句以及其執(zhí)行時(shí)間嗜逻,建議開發(fā)測(cè)試時(shí)啟用該功能,能快速揪出慢查詢
- 內(nèi)置全局?jǐn)r截插件:提供全表 delete 缭召、 update 操作智能分析阻斷栈顷,也可自定義攔截規(guī)則,預(yù)防誤操作
mybatis plus嵌巷,對(duì)于mybatis的增強(qiáng)不是一點(diǎn)半點(diǎn)的萄凤,這兩者結(jié)合使用,真的可以大幅的提升開發(fā)效率搪哪。目前蛙卤,也有眾多互聯(lián)網(wǎng)公司正在使用mybatis plus。下面噩死,就讓我們快速上手mybatis plus吧颤难。
快速開始
數(shù)據(jù)庫(kù)表(來(lái)自官方文檔):
id | name | age | |
---|---|---|---|
1 | Jone | 18 | test1@baomidou.com |
2 | Jack | 20 | test2@baomidou.com |
3 | Tom | 28 | test3@baomidou.com |
4 | Sandy | 21 | test4@baomidou.com |
5 | Billie | 24 | test5@baomidou.com |
建表語(yǔ)句:
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主鍵ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年齡',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
PRIMARY KEY (id)
);
數(shù)據(jù):
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
引入依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
一個(gè)是mysql的依賴,一個(gè)是mybatis-plus的依賴
編寫User.java實(shí)體類
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
UserMapper接口
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
快速使用
上面的步驟做完已维,就可以開始使用mybatis plus了行嗤。
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void test1() {
List<User> users = userMapper.selectList(null);
users.forEach(e -> {
System.out.println(e.toString());
});
}
}
輸出結(jié)果:
通過(guò)注解寫sql
通過(guò)Select Insert Update Delete 注解,可以寫增刪查改語(yǔ)句垛耳,如下:
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("select * from user where id = #{id}")
User findUserById(int id);
}
通過(guò)xml配置寫sql
通過(guò)xml的方式寫sql的話栅屏,需要先配置xml的位置:
mybatis-plus.mapper-locations=classpath:mappers/*.xml
示例xml配置如下:userMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="happy.mybatisplus.mapper.UserMapper">
<select id="findUserByName" parameterType="string"
resultType="happy.mybatisplus.entity.User">
SELECT * FROM user WHERE name = #{name}
</select>
</mapper>
這些都屬于mybatis的范疇了,這里就不做過(guò)多介紹堂鲜。
mybatis-plus常用
下面列出一些mybatis-plus中常用的東西:
1栈雳、指定實(shí)體類對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名
@TableName(value = "user")
在實(shí)體類與數(shù)據(jù)庫(kù)表明不是對(duì)應(yīng)的情況下使用,如:
@Data
@TableName(value = "user")
public class UserEntity {
private Long id;
private String name;
private Integer age;
private String email;
}
2缔莲、指定字段對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段名
@TableField(value = "age")
如:
@Data
@TableName(value = "user")
public class UserEntity {
private Long id;
private String name;
@TableField(value = "age")
private Integer userAge;
private String email;
}
3哥纫、插入數(shù)據(jù),得到主鍵
調(diào)用mybatis plus 提供的insert方法痴奏,執(zhí)行后蛀骇,會(huì)把主鍵設(shè)置到入?yún)⒌膇d屬性中厌秒,如下:
4、分頁(yè)
配置分頁(yè)插件:
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
分頁(yè)示例:
總結(jié)
這里演示了springboot快速使用mybatis-plus擅憔,mybatis-plus有非常豐富的用法鸵闪,這里沒(méi)法一一列舉。有興趣的朋友暑诸,可以直接到官方文檔里查看蚌讼。