福建省建建設(shè)行業(yè)信用評(píng)分網(wǎng)站優(yōu)化網(wǎng)站的步驟

學(xué)習(xí)目標(biāo)
能夠基于MyBatisPlus完成標(biāo)準(zhǔn)Dao開發(fā)
能夠掌握MyBatisPlus的條件查詢
能夠掌握MyBatisPlus的字段映射與表名映射
能夠掌握id生成策略控制
能夠理解代碼生成器的相關(guān)配置
一、MyBatisPlus簡(jiǎn)介
MyBatisPlus(簡(jiǎn)稱MP)是基于MyBatis框架基礎(chǔ)上開發(fā)的增強(qiáng)型工具,旨在簡(jiǎn)化開發(fā)、提高效率
開發(fā)方式
基于MyBatis使用MyBatisPlus
基于Spring使用MyBatisPlus
基于SpringBoot使用MyBatisPlus
1. 入門案例




①:創(chuàng)建新模塊,選擇Spring初始化,并配置模塊相關(guān)基礎(chǔ)信息


②:選擇當(dāng)前模塊需要使用的技術(shù)集(僅保留JDBC)




③:手動(dòng)添加MyBatisPlus起步依賴
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--添加mybatisplus的依賴 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency>
注意事項(xiàng)1:由于mp并未被收錄到idea的系統(tǒng)內(nèi)置配置,無法直接選擇加入
注意事項(xiàng)2:如果使用Druid數(shù)據(jù)源,需要導(dǎo)入對(duì)應(yīng)坐標(biāo)
④:制作實(shí)體類與表結(jié)構(gòu)
(類名與表名對(duì)應(yīng),屬性名與字段名對(duì)應(yīng))
新建一個(gè)數(shù)據(jù)庫(kù)mybatisplyus





⑤:設(shè)置Jdbc參數(shù)(application.yml)
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTCusername: rootpassword: 123456
⑥:定義數(shù)據(jù)接口,繼承BaseMapper

//使用mp,dao的寫法,只需要繼承一個(gè)父親接口就可以BaseMapper,還要注意加上泛型
@Mapper
public interface UserDao extends BaseMapper<User> {}
⑦:測(cè)試類中注入dao接口,測(cè)試功能
查詢所有
@SpringBootTest
public class TestUserDao {@Autowiredprivate UserDao userDao;//查詢所有@Testvoid testFindAll() {List<User> list = userDao.selectList(null);System.out.println("list=" +list);}}


2. MyBatisPlus概述
問題導(dǎo)入
通過入門案例制作,MyBatisPlus的優(yōu)點(diǎn)有哪些?
2.1 MyBatis介紹
MyBatisPlus(簡(jiǎn)稱MP)是基于MyBatis框架基礎(chǔ)上開發(fā)的增強(qiáng)型工具,旨在簡(jiǎn)化開發(fā)、提高效率
官網(wǎng):https://mybatis.plus/ https://mp.baomidou.com/
2.2 MyBatisPlus特性
無侵入:只做增強(qiáng)不做改變,不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響
強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper,少量配置即可實(shí)現(xiàn)單表CRUD 操作
支持 Lambda:編寫查詢條件無需擔(dān)心字段寫錯(cuò)
支持主鍵自動(dòng)生成
內(nèi)置分頁(yè)插件
……
二、標(biāo)準(zhǔn)數(shù)據(jù)層開發(fā)
1. MyBatisPlus的CRUD操作

下面用MP進(jìn)行CURD
1.1添加
// 新增
@Testvoid testAdd() {User user = new User();user.setName("黑馬程序員");user.setPassword("itheima");user.setAge(12);user.setTel("4006184000");int row = userDao.insert(user);System.out.println("row = " + row);}


1.2 刪除
這里面因?yàn)閯偛挪恍⌒亩嘣黾右粋€(gè)相同內(nèi)容 所以這里面刪除的話id就用雪花
//刪除@Testvoid testDelete() {// int row = userDao.deleteById(3);int row = userDao.deleteById(1631599267871215618L);System.out.println("row = " + row);}

我們現(xiàn)在把另一個(gè)也刪除了




1.3 修改
//修改@Testvoid testUpdate() {//1.先查詢數(shù)據(jù)User user = userDao.selectById(2);user.setPassword("777");//2.修改int row = userDao.updateById(user);System.out.println("row = " + row);}


1.4 查詢單個(gè)
//查詢單個(gè)@Testvoid testFindById() {User user = userDao.selectById(2);System.out.println("user = " + user);}


2. Lombok插件介紹
問題導(dǎo)入
有什么簡(jiǎn)單的辦法可以自動(dòng)生成實(shí)體類的GET、SET方法?
Lombok,一個(gè)Java類庫(kù),提供了一組注解,簡(jiǎn)化POJO實(shí)體類開發(fā)。
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version>
</dependency>
常用注解:==@Data==,為當(dāng)前實(shí)體類在編譯期設(shè)置對(duì)應(yīng)的get/set方法,無參/無參構(gòu)造方法,toString方法,hashCode方法,equals方法等
package com.itheima.domain;import lombok.*;
/*1 生成getter和setter方法:@Getter、@Setter生成toString方法:@ToString生成equals和hashcode方法:@EqualsAndHashCode2 統(tǒng)一成以上所有:@Data3 生成空參構(gòu)造: @NoArgsConstructor生成全參構(gòu)造: @AllArgsConstructor4 lombok還給我們提供了builder的方式創(chuàng)建對(duì)象,好處就是可以鏈?zhǔn)骄幊獭?@Builder【擴(kuò)展】*/
@Data
public class User {private Long id;private String name;private String password;private Integer age;private String tel;
}
3. MyBatisPlus分頁(yè)功能
問題導(dǎo)入
思考一下Mybatis分頁(yè)插件是如何用的?
3.1 分頁(yè)功能接口



3.2 MyBatisPlus分頁(yè)使用

①:執(zhí)行分頁(yè)查詢
Ipage 接口
用MP后 是有一個(gè)selectPage() 方法 然后這個(gè)方法傳進(jìn)去一個(gè)對(duì)象page 這里面就已經(jīng)包裝了查第幾頁(yè) 每頁(yè)查第多少條





//分面查詢@Testvoid testFindPage() {/** @param current 當(dāng)前頁(yè)* @param size 每頁(yè)顯示條數(shù)*///1 創(chuàng)建IPage分頁(yè)對(duì)象,設(shè)置分頁(yè)參數(shù) 當(dāng)前頁(yè)為第一頁(yè) 每頁(yè)顯示條數(shù)為2條//IPage<User> page =new Page<>(1,2);//1 創(chuàng)建IPage分頁(yè)對(duì)象,設(shè)置分頁(yè)參數(shù) 當(dāng)前頁(yè)為第二頁(yè) 每頁(yè)顯示條數(shù)為2條IPage<User> page =new Page<>(2,2);//2 執(zhí)行分頁(yè)查詢IPage<User> iPage = userDao.selectPage(page, null);//3 獲取分頁(yè)結(jié)果System.out.println("當(dāng)前頁(yè)碼值:"+page.getCurrent());System.out.println("每頁(yè)顯示數(shù):"+page.getSize());System.out.println("總頁(yè)數(shù):"+page.getPages());System.out.println("總條數(shù):"+page.getTotal());System.out.println("當(dāng)前頁(yè)數(shù)據(jù):"+page.getRecords());}}


②:設(shè)置分頁(yè)攔截器作為Spring管理的bean
@Configuration
public class MybatisPlusConfig {/*配置分頁(yè)攔截器,需要打上@Bean的注解,暴露給spring使用*/@Beanpublic MybatisPlusInterceptor mpi(){//1 創(chuàng)建MybatisPlus攔截器對(duì)象MybatisPlusInterceptor mpi =new MybatisPlusInterceptor();//2 添加分頁(yè)攔截器mpi.addInnerInterceptor(new PaginationInnerInterceptor());//返回MyBatisplus的攔截器對(duì)象return mpi;}
}

重新運(yùn)行發(fā)現(xiàn) 這回正常了


3.3 開啟MyBatisPlus日志
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTCusername: rootpassword: 123456
# 開啟mp的日志(輸出到控制臺(tái))
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3.4 解決日志打印過多問題
3.4.1 取消初始化spring日志打印

做法:在resources下新建一個(gè)logback.xml文件,名稱固定,內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration></configuration>
關(guān)于logback參考播客:https://www.jianshu.com/p/75f9d11ae011
3.4.2 取消SpringBoot啟動(dòng)banner圖標(biāo)

spring:main:banner-mode: off # 關(guān)閉SpringBoot啟動(dòng)圖標(biāo)(banner)
3.4.3 取消MybatisPlus啟動(dòng)banner圖標(biāo)

# mybatis-plus日志控制臺(tái)輸出
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:banner: off # 關(guān)閉mybatisplus啟動(dòng)圖標(biāo)
三、DQL編程控制
環(huán)境準(zhǔn)備

1. 條件查詢方式
MyBatisPlus將書寫復(fù)雜的SQL查詢條件進(jìn)行了封裝,使用編程的形式完成查詢條件的組合
