寫在前面
🛫更多知識總結見Mybatis-Plus專欄
🚕內容總結自尚硅谷楊博超老師的視頻
🚒博主對于該知識尚在學習階段
🚄如果發現存在問題請毫不吝嗇的指出
🚀🚀扎哇太棗糕的博客首頁🚀🚀
文章目錄
- 1 初識Mybatis-Plus
- 2 入門案例
1 初識Mybatis-Plus
??MyBatis-Plus簡稱 MP,是一個 MyBatis的增強工具,在MyBatis的基礎上只做增強不做改變,為簡化開發、提高效率而生。MyBatis-Plus有很多的特點支持很多的標準數據庫,具體等學到相關特性的時候再去詳細了解。MyBatis-Plus的官方文檔:https://baomidou.com/
??關于MyBatis-Plus的框架結構,也就是框架的底層實現官方文檔給出如下試圖,簡單總結來就是:掃描實體類,通過反射抽取實體類中的屬性并分析其與表中字段之間的關系,最后調用MyBatis-Plus提供的一堆方法生成SQL語句注入到MyBatis的容器中,從而實現不同的增刪改查功能
2 入門案例
前期環境準備
第一步: 創建數據庫表并插入數據
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快速創建一個SpringBoot工程
刪除選中的不必要文件以及文件夾
第三步: pom文件導入相關依賴
<!--mybatis-的場景啟動器-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version>
</dependency><!--lombok簡化實體類開發,如果之前沒有下載過依賴的同名插件的話需要下載安裝,然后重啟一下idea-->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency><!--數據庫連接驅動-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version><scope>runtime</scope>
</dependency><!--整合druid的數據源-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.17</version>
</dependency>
第四步: 配置文件改后綴為.yml并配置數據源
spring:# 數據源的各種配置datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatis_plususername: rootpassword: 123456# Mybatis-Plus開啟日志打印
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
各層代碼編寫
domain層實體類
/*** @author : mereign* @date : 2022/3/13 - 14:28* @desc : user實體類*/// 在編譯期間生成user類的全參構造方法
@AllArgsConstructor
// 在編譯期間生成user類的無參構造方法
@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 : 創建mapper接口繼承BaseMapper接口并傳user泛型*/// spring框架創建mapper接口相對應的接口實現類
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
測試類
/*** @author : mereign* @date : 2022/3/13 - 15:50* @desc : 測試類簡單測試mp的查詢方法*/@SpringBootTest
public class MybatisPlusTest {@AutowiredUserMapper mapper;@Testpublic void selectListTest() {// 通過條件構造器查詢到一個list集合,如果沒有條件的話參數設置為nullList<User> users = mapper.selectList(null);users.forEach(System.out::println);}
}
入門案例查詢結果入門案例中的小知識點
??測試類中注入mapper組件的時候代碼會報紅,但是并不會影響最終的程序執行結果。原因是:@Mapper接口將該接口動態生成的代理類注入到IOC容器中起相應的作用,所以使用自動注入mapper的時候會報紅在容器中找不到這個接口組件。解決方法:在mapper接口上加@Repository注解將類或接口標注為一個持久層組件。這樣的話一個注解用來起作用,一個注解用來注入的時候找到接口組件防止報紅
??生成的SQL語句中,表名為mapper接口傳入的泛型首字母小寫,表中字段名為泛型類的封裝屬性,如果需要修改實體類綁定的表名的話需要在實體類上使用@TableName注解