Mybatis-Plus環(huán)境配置與入門案例分析
1 初識(shí)Mybatis-Plus
??MyBatis-Plus簡(jiǎn)稱 MP,是一個(gè) MyBatis的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生。MyBatis-Plus有很多的特點(diǎn)支持很多的標(biāo)準(zhǔn)數(shù)據(jù)庫,具體等學(xué)到相關(guān)特性的時(shí)候再去詳細(xì)了解。MyBatis-Plus的官方文檔:https://baomidou.com/
關(guān)于MyBatis-Plus的框架結(jié)構(gòu),也就是框架的底層實(shí)現(xiàn)官方文檔給出如下試圖,簡(jiǎn)單總結(jié)來就是:掃描實(shí)體類,通過反射抽取實(shí)體類中的屬性并分析其與表中字段之間的關(guān)系,最后調(diào)用MyBatis-Plus提供的一堆方法生成SQL語句注入到MyBatis的容器中,從而實(shí)現(xiàn)不同的增刪改查功能
2 入門案例
前期環(huán)境準(zhǔn)備
第一步: 創(chuàng)建數(shù)據(jù)庫表并插入數(shù)據(jù)
CREATE TABLE `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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 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');
第二步: 使用Spring Initializr快速創(chuàng)建一個(gè)SpringBoot工程
刪除選中的不必要文件以及文件夾
第三步: pom文件導(dǎo)入相關(guān)依賴
<!--mybatis-的場(chǎng)景啟動(dòng)器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <!--lombok簡(jiǎn)化實(shí)體類開發(fā),如果之前沒有下載過依賴的同名插件的話需要下載安裝,然后重啟一下idea--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--數(shù)據(jù)庫連接驅(qū)動(dòng)--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> <scope>runtime</scope> </dependency> <!--整合druid的數(shù)據(jù)源--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.17</version> </dependency>
第四步: 配置文件改后綴為.yml并配置數(shù)據(jù)源
spring:
# 數(shù)據(jù)源的各種配置
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus
username: root
password: 123456
# Mybatis-Plus開啟日志打印
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
各層代碼編寫
domain層實(shí)體類
/** * @author : mereign * @date : 2022/3/13 - 14:28 * @desc : user實(shí)體類 */ // 在編譯期間生成user類的全參構(gòu)造方法 @AllArgsConstructor // 在編譯期間生成user類的無參構(gòu)造方法 @NoArgsConstructor // 在編譯期間生成封裝屬性的setter、getter方法,并重寫了toString和equals、hashCode方法 @Data public class User { private Long id; private String name; private Integer age; private String email; }
mapper層繼承接口
/** * @author : mereign * @date : 2022/3/13 - 15:43 * @desc : 創(chuàng)建mapper接口繼承BaseMapper接口并傳user泛型 */ // spring框架創(chuàng)建mapper接口相對(duì)應(yīng)的接口實(shí)現(xiàn)類 @Mapper public interface UserMapper extends BaseMapper<User> { }
測(cè)試類
/** * @author : mereign * @date : 2022/3/13 - 15:50 * @desc : 測(cè)試類簡(jiǎn)單測(cè)試mp的查詢方法 */ @SpringBootTest public class MybatisPlusTest { @Autowired UserMapper mapper; @Test public void selectListTest() { // 通過條件構(gòu)造器查詢到一個(gè)list集合,如果沒有條件的話參數(shù)設(shè)置為null List<User> users = mapper.selectList(null); users.forEach(System.out::println); } }
入門案例查詢結(jié)果
入門案例中的小知識(shí)點(diǎn)
??測(cè)試類中注入mapper組件的時(shí)候代碼會(huì)報(bào)紅,但是并不會(huì)影響最終的程序執(zhí)行結(jié)果。原因是:@Mapper接口將該接口動(dòng)態(tài)生成的代理類注入到IOC容器中起相應(yīng)的作用,所以使用自動(dòng)注入mapper的時(shí)候會(huì)報(bào)紅在容器中找不到這個(gè)接口組件。解決方法:在mapper接口上加@Repository注解將類或接口標(biāo)注為一個(gè)持久層組件。這樣的話一個(gè)注解用來起作用,一個(gè)注解用來注入的時(shí)候找到接口組件防止報(bào)紅 ??
生成的SQL語句中,表名為mapper接口傳入的泛型首字母小寫,表中字段名為泛型類的封裝屬性,如果需要修改實(shí)體類綁定的表名的話需要在實(shí)體類上使用@TableName注解
到此這篇關(guān)于Mybatis-Plus環(huán)境配置與入門案例分析的文章就介紹到這了,更多相關(guān)Mybatis-Plus 入門內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用Spring?integration在Springboot中集成Mqtt詳解
MQTT是多個(gè)客戶端通過一個(gè)中央服務(wù)器傳遞信息的多對(duì)多協(xié)議,能高效地將信息分發(fā)給一個(gè)或多個(gè)訂閱者,下面這篇文章主要給大家介紹了關(guān)于如何使用Spring?integration在Springboot中集成Mqtt的相關(guān)資料,需要的朋友可以參考下2023-02-02idea打開運(yùn)行配置java?web項(xiàng)目的全過程
這篇文章主要給大家介紹了關(guān)于idea打開運(yùn)行配置java?web項(xiàng)目的相關(guān)資料,有些時(shí)候我們用IDEA跑之前用eclipse中運(yùn)行的項(xiàng)目的時(shí)候,總是不止所措,要不就是只展示html,要不就是不能部署成功,需要的朋友可以參考下2023-08-08