国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

vs網(wǎng)站開發(fā)效果圖手機(jī)免費(fèi)建網(wǎng)站

vs網(wǎng)站開發(fā)效果圖,手機(jī)免費(fèi)建網(wǎng)站,網(wǎng)站建設(shè)優(yōu)化揚(yáng)州,昵稱小寫 wordpress目錄 第一章、快速了解mybatis-plus1.1)相關(guān)概念介紹1.2)為什么使用MyBatis-Plus1.3)學(xué)習(xí)過程中的疑問 第二章、 MyBatis-Plus與SpringBoot集成2.1)使用Spring Initializr創(chuàng)建SpringBoot項(xiàng)目2.2)安裝Lombok插件2.3&…

目錄

  • 第一章、快速了解mybatis-plus
    • 1.1)相關(guān)概念介紹
    • 1.2)為什么使用MyBatis-Plus
    • 1.3)學(xué)習(xí)過程中的疑問
  • 第二章、 MyBatis-Plus與SpringBoot集成
    • 2.1)使用Spring Initializr創(chuàng)建SpringBoot項(xiàng)目
    • 2.2)安裝Lombok插件
    • 2.3)準(zhǔn)備數(shù)據(jù)庫表
    • 2.3)配置文件application.properties
    • 2.4)pom文件添加依賴
  • 第三章、使用 MyBatis-Plus提供的注解
    • 3.1)常用注解介紹
        • @TableName:
        • @TableId:
        • @TableField:
    • 3.2)不常用注解
        • @TableLogic:
        • @EnumValue:
        • @Version:
        • @JsonProperty:
  • 第四章、MyBatis-Plus提供的代碼生成器
    • 4.1)添加依賴
    • 4.2)準(zhǔn)備CodeGenerator類
    • 4.3)右鍵運(yùn)行main方法
  • 第五章、MyBatis-Plus提供字段填充功能
    • 5.1)插入數(shù)據(jù)庫字段時通常需要帶上創(chuàng)建時間
    • 5.2)配置MetaObjectHandler開啟自動填充功能
    • 5.3)字段上使用@TableField
  • 第六章、Basemapper和Wrapper條件構(gòu)造器
    • 6.1)

友情提醒: 使用文心一言AI工具參與創(chuàng)作

先看文章目錄,大致了解文章知識點(diǎn)結(jié)構(gòu),點(diǎn)擊文章目錄可直接跳轉(zhuǎn)到文章指定位置。有用記得關(guān)注

第一章、快速了解mybatis-plus

1.1)相關(guān)概念介紹

MyBatis是什么?
MyBatis是一個開源的Java持久層ORM框架,基于XML配置文件將SQL語句與程序代碼分離,直接在XML配置文件中修改SQL語句。MyBatis內(nèi)部封裝了JDBC,簡化了加載驅(qū)動、創(chuàng)建連接、創(chuàng)建statement等繁雜的過程,提供了數(shù)據(jù)持久化的基本功能,如SQL映射、緩存管理等。但是使用MyBatis對XML和SQL的編寫規(guī)范要求較高。

ORM框架:
對象關(guān)系映射框架的簡稱,主要用于實(shí)現(xiàn)面向?qū)ο缶幊陶Z言與關(guān)系型數(shù)據(jù)庫之間的映射。ORM框架的核心思想是將數(shù)據(jù)庫表映射成程序中的對象,將表中的記錄映射成對象列表,將表的字段映射成對象的屬性。

MyBatis-Plus是什么?
MyBatis-Plus是一個MyBatis的增強(qiáng)工具包,僅依賴Mybatis以及Mybatis-Spring,在MyBatis的基礎(chǔ)上進(jìn)行了擴(kuò)展,使用注解和API的方式進(jìn)行數(shù)據(jù)持久化,

1.2)為什么使用MyBatis-Plus

MyBatis-Plus的一些主要特點(diǎn)和功能:
損耗小無侵入性:啟動就生成通用的CRUD方法損耗小。只增強(qiáng)MyBatis,不會對現(xiàn)有工程產(chǎn)生影響。
簡化開發(fā)過程:提供了代碼生成器,自動生成通用的CRUD方法,支持主鍵自動生成,支持Lambda表達(dá)式查詢
分頁插件:提供了分頁查詢的功能
條件構(gòu)造器:提供了強(qiáng)大的條件構(gòu)造器
可擴(kuò)展性:自定義SQL語句。用戶可以通過自定義MybatisSqlInjector來擴(kuò)展SQL語句,也允許用戶自定義Condition類來實(shí)現(xiàn)復(fù)雜查詢。

1.3)學(xué)習(xí)過程中的疑問

這里是我學(xué)習(xí)過程中產(chǎn)生的幾個疑問:

  • 如何與springboot集成
  • 代碼生成器怎么用?如何一次性創(chuàng)建所需的dao、mapper、通用CRUDservice類。
  • Mybatis-Plus提供了哪些注解給我們使用
  • 如何在插入數(shù)據(jù)的同時自動插入時間
  • Lambda表達(dá)式查詢怎么使用
  • 什么是BaseMapper
  • 分頁插件如何使用
  • 條件構(gòu)造器Wrapper是什么,怎么使用
  • 如何自定義SQL語句。如何自定義Condition類來實(shí)現(xiàn)復(fù)雜查詢

后續(xù)會一個個解決,開個專欄,出個系列文章。

第二章、 MyBatis-Plus與SpringBoot集成

2.1)使用Spring Initializr創(chuàng)建SpringBoot項(xiàng)目

①創(chuàng)建SpringBoot項(xiàng)目
教程鏈接:
idea快速搭建Springboot項(xiàng)目(一)

②setting里查看編譯器。我是Jdk11

在這里插入圖片描述
③setting里查看字符編碼是否一致
在這里插入圖片描述
④新建項(xiàng)目子包
項(xiàng)目結(jié)構(gòu)如圖
在這里插入圖片描述
啟動類使用@MapperScan注解掃描 Mapper 文件夾

package com.test.springboot;
org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.test.springboot.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

2.2)安裝Lombok插件

setting–>plugins–>右側(cè)marketplace 搜索Lombok–>
點(diǎn)擊install–>安裝完了點(diǎn)擊restartIDE
在這里插入圖片描述

Lombok作用:提高開發(fā)效率,通過注解形式使javabean生成get、set、構(gòu)造器、toString等方法

@Data

@ToString, @EqualsAndHashCode, 
所有屬性的@Getter, 所有non-final屬性的@Setter@RequiredArgsConstructor的組合

@Getter / @Setter

放在類上,會對所有的非靜態(tài)屬性生成Getter/Setter方法,
放在屬性上,會對該屬性生成Getter/Setter方法。
并可以指定Getter/Setter方法的訪問級別。

@ToString

生成toString方法

@EqualsAndHashCode

生成equals和hascode方法,可以指定具體使用哪些屬性。

@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor

生成無參構(gòu)造器、部分參數(shù)構(gòu)造器、全參構(gòu)造器,
要重載多個構(gòu)造器的時候,無法使用

2.3)準(zhǔn)備數(shù)據(jù)庫表

創(chuàng)建表:

CREATE TABLE `user` (`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',`name` varchar(32) DEFAULT NULL COMMENT '姓名',`age` int(11) DEFAULT NULL COMMENT '年齡',`skill` varchar(32) DEFAULT NULL COMMENT '技能',`evaluate` varchar(64) DEFAULT NULL COMMENT '評價(jià)',`fraction` bigint(11) DEFAULT NULL COMMENT '分?jǐn)?shù)',PRIMARY KEY (`id`)
) ;

插入數(shù)據(jù):

INSERT INTO `user` VALUES (1, '小明', 20, '畫畫', '畫畫高手', 89);
INSERT INTO `user` VALUES (2, '小強(qiáng)', 19, '游戲', '喜歡游戲', 64);
INSERT INTO `user` VALUES (3, '小張', 18, '英語', '外國人', 90);
INSERT INTO `user` VALUES (4, '小黃', 20, '體育', 'yellow', 76);
INSERT INTO `user` VALUES (5, '小白', 17, '繪畫', '別龍馬', 77);
INSERT INTO `user` VALUES (7, '小紅', 18, 'JAVA', '碼農(nóng)', 59);
INSERT INTO `user` VALUES (9, '小李', 18, '睡覺', '肥宅', 60);
INSERT INTO `user` VALUES (11, '數(shù)據(jù)1', 3, '畫肖像', NULL, 61);
INSERT INTO `user` VALUES (12, '數(shù)據(jù)2', 3, NULL, NULL, 61);
INSERT INTO `user` VALUES (13, '數(shù)據(jù)3', 3, NULL, NULL, 61);

2.3)配置文件application.properties

因?yàn)镾pring Boot 2.1 集成了 8.0版本的jdbc驅(qū)動,這個版本的 jdbc 驅(qū)動需要添加這個后綴 ?serverTimezone=Hongkong

server.port=9001server.servlet.context-path=/001-testspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=rootmybatis-plus.mapper-locations=classpath:mapper/*.xml

2.4)pom文件添加依賴

之前的pom文件里有這個依賴的得先刪了,因?yàn)镸ybatis-plus的依賴包含了原先Mybaits部分
在這里插入圖片描述

數(shù)據(jù)庫版本加到pom文件的 properties標(biāo)簽里面,后面MySQL加依賴,版本號就是這個了

<mysql-connector-java-version>8.0.28</mysql-connector-java-version>

加mysql依賴,加Mybatis-Plus依賴,加lombok依賴

<!--mysql-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector-java-version}</version>
</dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1.tmp</version>
</dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

第三章、使用 MyBatis-Plus提供的注解

3.1)常用注解介紹

MyBatis使用Mapper.XML文件來進(jìn)行數(shù)據(jù)表映射。有resultMap、sql、insert、update、delete和select等元素。其中resultMap用于描述如何從數(shù)據(jù)庫結(jié)果集中加載對象。

MyBatis-Plus可以使用XML配置進(jìn)行數(shù)據(jù)表映射,也可以使用注解來映射。
下面是注解方式詳細(xì)介紹:

@TableName:
@TableName("數(shù)據(jù)庫的表名"):用于指定實(shí)體類對應(yīng)的數(shù)據(jù)庫表名。//舉例
@TableName("table_user")  
public class User {  // ...  
}
@TableId:
@TableId("主鍵名"):用于指定實(shí)體類中的某個屬性作為數(shù)據(jù)庫表的主鍵。
@TableId(value = "id", type = IdType.AUTO):自增
@TableId(value = "id", type = IdType.ID_WORKER_STR):分布式全局唯一ID字符串類型
@TableId(value = "id", type = IdType.INPUT):自行輸入
@TableId(value = "id", type = IdType.ID_WORKER):分布式全局唯一ID 長整型類型
@TableId(value = "id", type = IdType.UUID)32UUID字符串
@TableId(value = "id", type = IdType.NONE):無狀態(tài)//舉例
@TableId(value = "id", type = IdType.AUTO)  
private Long id;
@TableField:
@TableField("字段名"):用于指定實(shí)體類中的某個屬性與數(shù)據(jù)庫表中的某個字段的對應(yīng)關(guān)系。
@TableField(exist = false):表示該屬性不為數(shù)據(jù)庫表字段,但又是必須使用的。
@TableField(exist = true):表示該屬性為數(shù)據(jù)庫表字段。
@TableField(condition = SqlCondition.LIKE):表示該屬性可以模糊搜索。
@TableField(fill = FieldFill.INSERT):注解填充字段 ,生成器策略部分也可以配置!//舉例
@TableField("username")  
private String username;

3.2)不常用注解

@TableLogic:
@TableLogic:用于在執(zhí)行刪除操作時,啟用或禁用級聯(lián)刪除功能。//舉例
@TableLogic(logicType = LogicType.KEEP)  
private Boolean isDeleted;
@EnumValue:
@EnumValue: 用于將枚舉類型屬性映射到數(shù)據(jù)庫表中的字符串類型字段。//舉例
public enum Gender {  MALE, FEMALE;  
}  @TableField("gender")  
@EnumValue(value = "name")  
private Gender gender;
@Version:
@Version:樂觀鎖注解、在使用樂觀鎖時,還需要在 MyBatis-Plus 的配置文件
中啟用樂觀鎖插件,并配置樂觀鎖的策略。這樣可以保證樂觀鎖功能的正確性。//舉例
@Version  
private Integer version;
@JsonProperty:
@JsonProperty: 用于實(shí)體類的屬性上,作用是重命名屬性,以便在反序列化時使用不同的名稱。

第四章、MyBatis-Plus提供的代碼生成器

4.1)添加依賴

mybatis-plus-generator依賴和velocity-engine-core依賴和commons-lang3依賴加到pom文件里面,代碼生成器會用到

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.0</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.5</version></dependency>

4.2)準(zhǔn)備CodeGenerator類

新建一個CodeGenerator類

package com.icbc.coresd.util;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;public class CodeGenerator {public static void main(String[] args) {AutoGenerator mpg = new AutoGenerator();// 數(shù)據(jù)源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://xxx.xx.xxx:3306/sdtools?useUnicode=true&characterEncoding-utf-8&useSSL=false&serverTimezone=UTC");dsc.setDriverName("com.mysql.jdbc.Driver");dsc.setUsername("數(shù)據(jù)庫賬號");dsc.setPassword("數(shù)據(jù)庫密碼");mpg.setDataSource(dsc);// 全局配置GlobalConfig gc = new GlobalConfig();//代碼輸出的目錄在java下gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java/");gc.setAuthor("作者名稱");gc.setOpen(false);//每次生成代碼的時候是否重置gc.setFileOverride(false);//主鍵自增長gc.setIdType(IdType.AUTO);gc.setDateType(DateType.ONLY_DATE);mpg.setGlobalConfig(gc);// 包配置PackageConfig pc = new PackageConfig();//在目錄的哪個包下pc.setParent("com.xxxx.core");mpg.setPackageInfo(pc);// 策略配置StrategyConfig strategy = new StrategyConfig();//下劃線轉(zhuǎn)駝峰strategy.setNaming(NamingStrategy.underline_to_camel);strategy.setColumnNaming(NamingStrategy.underline_to_camel);strategy.setEntityLombokModel(true);strategy.setRestControllerStyle(true);strategy.setControllerMappingHyphenStyle(true);strategy.setTablePrefix(pc.getModuleName() + "_");mpg.setStrategy(strategy);// 模板配置TemplateConfig templateConfig = new TemplateConfig();templateConfig.setXml(null);mpg.setTemplate(templateConfig);// 執(zhí)行生成mpg.execute();}
}

4.3)右鍵運(yùn)行main方法

在CodeGenerator類中配置代碼生成的設(shè)置后,右鍵運(yùn)行main方法后,Mybatis-Plus會識別這個類,并根據(jù)類中的設(shè)置生成相應(yīng)代碼。生成的代碼包括:entity類,接口,實(shí)現(xiàn)類等。里面具體的配置寫了注釋,如果想弄懂每個配置的含義,可以把每個配置拿去查一下具體的含義。

第五章、MyBatis-Plus提供字段填充功能

5.1)插入數(shù)據(jù)庫字段時通常需要帶上創(chuàng)建時間

在設(shè)計(jì)數(shù)據(jù)庫表時,通常必須有以下字段

自增ID
創(chuàng)建時間:createdTime
修改時間:updatedTime
創(chuàng)建人:createBy
修改人:updateBy

而MyBatis-Plus提供字段填充功能可以讓我們輕松實(shí)現(xiàn)插入數(shù)據(jù)的同時,在createTime字段填充當(dāng)前時間。
①確保數(shù)據(jù)庫時間字段類型與實(shí)體類中的字段類型匹配
如:實(shí)體類中的字段類型為java.util.Date
則數(shù)據(jù)庫的字段為TIMESTAMP

②在application.yaml文件中配置下面這些信息,允許bean定義重寫,其實(shí)不寫配置也行,就當(dāng)拓展知識點(diǎn)了。

spring:main:allow-bean-definition-overriding: true

5.2)配置MetaObjectHandler開啟自動填充功能

①創(chuàng)建一個類并實(shí)現(xiàn)MetaObjectHandler接口,該接口包含了insertFill和updateFill兩個方法,用于指定在插入和更新操作時自動填充的字段

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;@Component
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createdTime", Date.class, new Date());// 其他需要插入填充的字段}@Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, "updatedTime", Date.class, new Date());// 其他需要更新填充的字段}
}

5.3)字段上使用@TableField

實(shí)體類的相應(yīng)字段上使用@TableField注解,指定需要自動填充的字段。

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("table_user")
public class user{@TableId(type = IdType.AUTO)private Long id;@TableField(value = "created_time",fill = FieldFill.INSERT)private Date createdTime;@TableField(value = "updated_time",fill = FieldFill.INSERT_UPDATE)private Date updatedTime;// 其他字段
}

配置好以后,嘗試插入數(shù)據(jù),發(fā)現(xiàn)created_time字段已經(jīng)字段填充了當(dāng)前時間

第六章、Basemapper和Wrapper條件構(gòu)造器

6.1)

Lambda查詢

http://aloenet.com.cn/news/36287.html

相關(guān)文章:

  • 北京微網(wǎng)站建設(shè)設(shè)計(jì)服務(wù)公司東莞網(wǎng)絡(luò)公司網(wǎng)絡(luò)推廣
  • 建設(shè)銀行網(wǎng)站首頁口關(guān)鍵詞優(yōu)化方法有什么步驟
  • 網(wǎng)站建設(shè)需要會什么軟件有哪些內(nèi)容seo網(wǎng)站推廣工作內(nèi)容
  • 免費(fèi)h5網(wǎng)站模版谷歌seo服務(wù)
  • 瑞安做網(wǎng)站百度云盤官網(wǎng)登錄入口
  • 成都建設(shè)工程交易中心網(wǎng)站深圳seo招聘
  • 扁平化企業(yè)網(wǎng)站媒體發(fā)布平臺
  • 廈門網(wǎng)站制作費(fèi)用怎么搭建屬于自己的網(wǎng)站
  • 服裝購物網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷組織的概念
  • 如何制作一個官網(wǎng)sem優(yōu)化軟件選哪家
  • 開一個網(wǎng)站建設(shè)公司外鏈工具xg
  • 怎么給公司做微網(wǎng)站軟文關(guān)鍵詞排名推廣
  • 石家莊新聞網(wǎng)seo推廣服務(wù)哪家好
  • 站長工具seo綜合查詢排名怎么做關(guān)鍵詞排名靠前
  • 香港vps可看netflix東營seo網(wǎng)站推廣
  • 做電子商務(wù)系統(tǒng)網(wǎng)站建設(shè)怎么推廣產(chǎn)品最有效
  • 如何在百度上做網(wǎng)站品牌策劃書
  • 福州交通建設(shè)集團(tuán)官方網(wǎng)站軟文營銷寫作技巧
  • 建設(shè)工程施工合同條例湖北搜索引擎優(yōu)化
  • 織夢映像網(wǎng)絡(luò)推廣seo怎么弄
  • 企業(yè) 網(wǎng)站 程序愛站網(wǎng)關(guān)鍵詞查詢
  • 如何用vps做網(wǎng)站中央新聞
  • 網(wǎng)站如何制作浙江技能培訓(xùn)班
  • 做電商的批發(fā)網(wǎng)站可以直接進(jìn)入的輿情網(wǎng)站
  • 扶貧基金會網(wǎng)站建設(shè)是哪家公司班級優(yōu)化大師官方網(wǎng)站
  • 中國設(shè)計(jì)聯(lián)盟官網(wǎng)短視頻入口seo
  • 網(wǎng)站網(wǎng)頁設(shè)計(jì)內(nèi)容百度網(wǎng)盤客服在線咨詢
  • 做網(wǎng)站橫幅用什么軟件好河南網(wǎng)站關(guān)鍵詞優(yōu)化
  • 深圳網(wǎng)站營銷公司談?wù)勀銓ヂ?lián)網(wǎng)營銷的認(rèn)識
  • 如何幫助網(wǎng)站吸引流量會計(jì)培訓(xùn)班一般多少錢