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

當前位置: 首頁 > news >正文

嗶哩嗶哩b站肉片免費入口在哪里自己可以創(chuàng)建網(wǎng)站嗎

嗶哩嗶哩b站肉片免費入口在哪里,自己可以創(chuàng)建網(wǎng)站嗎,微信上的網(wǎng)站怎么做,Wordpress動圖主題文章目錄 一、初識 MyBatis Plus1.1 MyBatis Plus 是什么1.2 MyBatis Plus 和 MyBatis 的區(qū)別 二、在 Spring Boot 項目中集成 MyBatis Plus2.1 環(huán)境準備2.2 引入 MyBatis Plus 依賴2.3 定義 Mapper2.4 測試 MyBatis Plus 的使用 三、MyBatis Plus 常用注解3.1 為什么需要注解3…

文章目錄

  • 一、初識 MyBatis Plus
    • 1.1 MyBatis Plus 是什么
    • 1.2 MyBatis Plus 和 MyBatis 的區(qū)別
  • 二、在 Spring Boot 項目中集成 MyBatis Plus
    • 2.1 環(huán)境準備
    • 2.2 引入 MyBatis Plus 依賴
    • 2.3 定義 Mapper
    • 2.4 測試 MyBatis Plus 的使用
  • 三、MyBatis Plus 常用注解
    • 3.1 為什么需要注解
    • 3.2 @TableName
    • 3.3 @TableId
    • 3.4 @TableField
  • 四、MyBatis Plus 常見配置


一、初識 MyBatis Plus

1.1 MyBatis Plus 是什么

MyBatis Plus(簡稱 MyBatis-Plus 或 MP)是一個流行的Java持久層框架,它在 MyBatis 的基礎(chǔ)上進行了擴展,旨在簡化數(shù)據(jù)庫操作和提高開發(fā)效率。它提供了豐富的功能和工具,使開發(fā)者能夠更輕松地進行數(shù)據(jù)庫操作,包括增刪改查等常見操作。MyBatis Plus 還提供了一套方便的 API 和注解,可以減少編寫重復(fù)性代碼的工作。

MyBatis Plus 的官網(wǎng):https://www.baomidou.com

1.2 MyBatis Plus 和 MyBatis 的區(qū)別

MyBatis Plus 與原始的 MyBatis 框架有以下主要區(qū)別:

  • 功能增強:MyBatis Plus 在 MyBatis 的基礎(chǔ)上提供了更多的功能,如通用的 CRUD 操作、分頁查詢、條件構(gòu)造器等。這些功能減少了開發(fā)人員的工作量,提高了開發(fā)效率。

  • 注解支持:MyBatis Plus 引入了一系列注解,如@TableName@TableId、@TableField等,使得實體類的映射更加靈活和方便,不再需要 XML 映射文件。

  • 更強大的條件構(gòu)造器:MyBatis Plus 的條件構(gòu)造器允許我們以更加直觀和鏈式的方式構(gòu)建 SQL 查詢條件,而不必擔心拼接 SQL 字符串。

  • 自動代碼生成:MyBatis Plus 提供了代碼生成器,可以根據(jù)數(shù)據(jù)庫表結(jié)構(gòu)自動生成實體類和 Mapper 接口,極大地簡化了開發(fā)過程。

總的來說,MyBatis Plus 是 MyBatis 的增強版,旨在提供更多便捷的特性,減少開發(fā)工作,同時保留了 MyBatis 的靈活性和強大性能。

二、在 Spring Boot 項目中集成 MyBatis Plus

2.1 環(huán)境準備

為了更好的演示 MyBatis Plus 的使用,我首先準備了一個 Spring Boot Demo 示例代碼,其中使用了 MyBatis 實現(xiàn)了對一張 User 表的增刪改查操作:

這個 Demo 的結(jié)構(gòu)如下:

User 表的結(jié)構(gòu)如下:

并且通過單元測試,使用了對 User 表的增刪改查功能的測試:

以上就會整個 Demo 的結(jié)構(gòu),下面將使用 MyBatis Plus 來代替 MyBatis,實現(xiàn)對 User 表的增刪改查操作。

2.2 引入 MyBatis Plus 依賴

MyBatis Plus 提供了 Spring Boot 的自動裝配功能starter,并且同時實現(xiàn)了 MyBatis 的相關(guān)功能,其 Maven 依賴如下,將其拷貝到 pom,xml文件下即可:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version>
</dependency>

注意,由于 MyBatis Plus 同時包含了 MyBatis 的功能,因此以前的 MyBatis 依賴則可以直接刪除掉:

2.3 定義 Mapper

為了簡化對數(shù)據(jù)庫表的增刪改查操作,MyBatis Plus 提供了一個基礎(chǔ)的BaseMapper接口,其中以及包含了對單表的增刪改查操作:

因此我們自己定義的Mapper只需要繼承這個接口,就能夠使用這些方法。例如,改造原來的UserMapper

public interface UserMapper extends BaseMapper<User> {
}

此時,原來UserMapper接口中的方法和 UserMapper.xml中寫的SQL語句也都可以不要了:

2.4 測試 MyBatis Plus 的使用

最后,我們可以在 UserMapperTest 類中,改造我們的測試方法,將原來增刪改查的方法改成從 BaseMapper 中繼承過來的方法:

@SpringBootTest
class UserMapperTest {@Autowiredprivate UserMapper userMapper;@Testvoid testInsert() {User user = new User();user.setId(6L);user.setUsername("Lucy");user.setPassword("123");user.setPhone("11111111111");user.setBalance(200);user.setInfo("{\"age\": 24, \"intro\": \"英文老師\", \"gender\": \"female\"}");user.setCreateTime(LocalDateTime.now());user.setUpdateTime(LocalDateTime.now());// userMapper.saveUser(user);userMapper.insert(user);}@Testvoid testSelectById() {// User user = userMapper.queryUserById(5L);User user = userMapper.selectById(5L);System.out.println("user = " + user);}@Testvoid testQueryByIds() {// List<User> users = userMapper.queryUserByIds(List.of(1L, 2L, 3L, 4L));List<User> users = userMapper.selectBatchIds(Arrays.asList(1L, 2L, 3L, 4L));users.forEach(System.out::println);}@Testvoid testUpdateById() {User user = new User();user.setId(5L);user.setBalance(20000);// userMapper.updateUser(user);userMapper.updateById(user);}@Testvoid testDeleteUser() {// userMapper.deleteUser(5L);userMapper.deleteById(5L);}
}

在上面的代碼中,注釋掉的語句是原來通過 MyBatis 來實現(xiàn)的,在這些注釋代碼的下一行則是有 MyBatis Plus 提供的功能。運行這些測試代碼,全部順利通過。至此,是不是覺得 MyBatis Plus 比 MyBatis 好用多了啊。

三、MyBatis Plus 常用注解

3.1 為什么需要注解

在上面的例子中,僅僅是引入了 MyBatis Plus 的依賴,然后在自己的 Mapper 接口中繼承了 BaseMapper,就實現(xiàn)了對單表的增刪改查操作,那么問題來了:就是 MyBatis Plus 是如何知道對哪張表進行操作的呢?

通過觀察我們自己的 UserMapper 可以發(fā)現(xiàn),繼承的 BaseMapper 是一個泛型接口,我們指定了 user 表對應(yīng)的 POUser,例如:

此時,泛型中的 User就是與數(shù)據(jù)庫對應(yīng)的PO類。Mybatis Plus 就是根據(jù) PO 實體的信息來推斷出表的信息,從而生成具體的 SQL語句。在默認情況下,MyBatis Plus 會根據(jù) PO 實體進行以下操作:

  • Mybatis Plus 會把 PO 實體的類名按照 駝峰轉(zhuǎn)下劃線 的規(guī)則將其作為數(shù)據(jù)庫表名;
  • Mybatis Plus 會把 PO 實體的所有變量名按照 駝峰轉(zhuǎn)下劃線的規(guī)則作為表的字段名,并根據(jù)變量類型推斷字段類型;
  • Mybatis Plus 會把名為 id 的字段作為該表的主鍵。

但是,在很多的實際情況下都與上面默認的情況不符。比如,數(shù)據(jù)庫表以tb_開頭、主鍵名不是id、字段是一些特殊的關(guān)鍵字等等。這些情況在MyBatis中,可以在Mapper.xml文件中進行解決,但是在 Mybatis Plus中就可以使用下面的注解進行解決了。

3.2 @TableName

@TableName 注解用于指定數(shù)據(jù)庫表的名稱。

默認情況下,MyBatis Plus 會根據(jù)實體類的類名轉(zhuǎn)化為數(shù)據(jù)庫表名,但如果數(shù)據(jù)庫表名與實體類的類名不匹配,就可以使用這個注解來明確指定表名。這對于處理表名以特殊前綴開頭(例如tb_)的情況非常有用。

示例:

@TableName("user")
public class User {private Long id;private String name;
}

@TableName 注解除了指定表名以外,還可以指定很多其它屬性:

屬性類型必須指定默認值描述
valuestring“”表名
schemastring“”schema
keepGlobalPrefixbooleanfalse是否保持使用全局的 tablePrefix 的值(當全局tablePrefix生效時)
resultMapstring“”xml 中 resultMap 的 id (用于滿足特定類型的實體類對象綁定)
autoResultMapbooleanfalse是否自動構(gòu)建resultMap 并使用(如果設(shè)置 resultMap 則不會進行 resultMap 的自動構(gòu)建與注入)
excludePropertystring[]{}需要排除的屬性名 @since 3.3.1

3.3 @TableId

@TableId 注解用于指定主鍵字段。

默認情況下,MyBatis Plus 會將名為 "id" 的字段作為主鍵,但如果表的主鍵字段名稱不是 "id",就可以使用這個注解來指定實體類中的主鍵字段。

示例:

@TableName("user")
public class User {@TableIdprivate Long id;private String name;
}

@TableId 注解支持兩個屬性:

屬性類型必須指定默認值描述
valueString“”表名
typeEnumIdType.NONE指定主鍵類型

IdType支持的類型有:

描述
AUTO數(shù)據(jù)庫 ID 自增
NONE無狀態(tài),該類型為未設(shè)置主鍵類型(注解里等于跟隨全局,全局里約等于 INPUT)
INPUTinsert 前自行 set 主鍵值
ASSIGN_ID分配 ID(主鍵類型為 Number(Long 和 Integer)或 String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默認實現(xiàn)類為DefaultIdentifierGenerator雪花算法)
ASSIGN_UUID分配 UUID,主鍵類型為 String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默認 default 方法)
ID_WORKER分布式全局唯一 ID 長整型類型(please use ASSIGN_ID)
UUID32 位 UUID 字符串(please use ASSIGN_UUID)
ID_WORKER_STR分布式全局唯一 ID 字符串類型(please use ASSIGN_ID)

這里比較常見的有三種:

  • AUTO:利用數(shù)據(jù)庫的id自增長
  • INPUT:手動生成 id
  • ASSIGN_ID:雪花算法生成 Long 類型的全局唯一 id,這是默認的 ID 策略

3.4 @TableField

@TableField 注解用于指定數(shù)據(jù)庫表字段與實體類屬性之間的映射關(guān)系。

如果字段名與屬性名不匹配,或者需要進行特殊的映射,就可以使用這個注解來定義字段名、是否為主鍵、是否為插入或更新時的條件等。

示例:

@TableName("user")
public class User {@TableIdprivate Long id;private String name;private Integer age;@TableField("isMarried")private Boolean isMarried;@TableField("concat")private String concat;
}

在一般情況下并不需要給字段添加@TableField注解,一些特殊情況除外,例如:

  • 成員變量名與數(shù)據(jù)庫字段名不一致
  • 成員變量是以isXXX命名,按照 JavaBean 的規(guī)范,Mybatis Plus 識別字段時會把 is 去除,這就導致與數(shù)據(jù)庫的字段名不符。
  • 成員變量名與數(shù)據(jù)庫一致,但是與數(shù)據(jù)庫的關(guān)鍵字沖突。使用@TableField注解給字段名添加 `` 轉(zhuǎn)義。

另外,@TableField 注解還支持其他參數(shù):

屬性類型必填默認值描述
valueString“”數(shù)據(jù)庫字段名
existbooleantrue是否為數(shù)據(jù)庫表字段
conditionString“”字段 where 實體查詢比較條件,有值設(shè)置則按設(shè)置的值為準,沒有則為默認全局的 %s=#{%s},參考(opens new window)
updateString“”字段 update set 部分注入,例如:當在version字段上注解update=“%s+1” 表示更新時會 set version=version+1 (該屬性優(yōu)先級高于 el 屬性)
insertStrategyEnumFieldStrategy.DEFAULT舉例:NOT_NULL insert into table_a(column) values (#{columnProperty})
updateStrategyEnumFieldStrategy.DEFAULT舉例:IGNORED update table_a set column=#{columnProperty}
whereStrategyEnumFieldStrategy.DEFAULT舉例:NOT_EMPTY where column=#{columnProperty}
fillEnumFieldFill.DEFAULT字段自動填充策略
selectbooleantrue是否進行 select 查詢
keepGlobalFormatbooleanfalse是否保持使用全局的 format 進行處理
jdbcTypeJdbcTypeJdbcType.UNDEFINEDJDBC 類型 (該默認值不代表會按照該值生效)
typeHandlerTypeHander類型處理器 (該默認值不代表會按照該值生效)
numericScaleString“”指定小數(shù)點后保留的位數(shù)

四、MyBatis Plus 常見配置

MyBatis Plus 同樣支持使用 yaml 格式的配置,關(guān)于 MyBatis Plus 的配置可以從起官網(wǎng)中進行了解:使用配置。

下面是關(guān)于 MyBatis Plus 的常用配置:

mybatis-plus:type-aliases-package: com.demo.mp.domain.po # 別名掃描包mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,默認值global-config:db-config:id-type: auto # 指定 id 的生成方式configuration:map-underscore-to-camel-case: true # 是否開啟下劃線和駝峰的映射cache-enabled: false # 是否開啟二級緩存

對上述配置的說明:

  • 因為 MyBatis Plus 支持 MyBatis ,因此在 MyBatis Plus 中也支持手寫 SQL形式的 Mapper 映射。因為 mapper 文件的讀取地址可以由我們自己配置。
  • id-type:可指定在默認情況下 id 的生成方式,比如 auto、 assign_id 等。
  • map-underscore-to-camel-case:開啟下劃線和駝峰的命名規(guī)則直接的映射轉(zhuǎn)換。
  • cache-enabled:是否開啟二級緩存。
http://m.aloenet.com.cn/news/1034.html

相關(guān)文章:

  • 友情網(wǎng)站制作藝人百度指數(shù)排行榜
  • 烏魯木齊住房和城鄉(xiāng)建設(shè)廳網(wǎng)站百度上首頁
  • 在農(nóng)村做相親網(wǎng)站怎么樣百度域名提交收錄網(wǎng)址
  • 網(wǎng)站在其他地區(qū)備案買友情鏈接
  • 最便宜做公司網(wǎng)站app營銷策劃方案
  • 如何進入微網(wǎng)站同城引流用什么軟件
  • 怎樣建設(shè)網(wǎng)站是什么意思全網(wǎng)推廣費用
  • 網(wǎng)站發(fā)布初期的推廣seo每天一貼
  • wordpress 編輯器 視頻教程東莞seo優(yōu)化方案
  • 怎樣買網(wǎng)站建設(shè)濟南seo網(wǎng)站排名優(yōu)化工具
  • 醫(yī)療美容培訓網(wǎng)站建設(shè)搜索引擎培訓班
  • 織夢網(wǎng)站推廣插件無憂軟文網(wǎng)
  • 網(wǎng)站代碼修改某個產(chǎn)品營銷推廣方案
  • 自己的網(wǎng)站如何做快照劫持搜索引擎外部優(yōu)化有哪些渠道
  • wordpress登錄安全插件下載網(wǎng)站優(yōu)化策劃書
  • 網(wǎng)站建設(shè)編輯部搜索網(wǎng)站的瀏覽器
  • 工業(yè)軟件開發(fā)技術(shù)就業(yè)前景seo代做
  • 體育類網(wǎng)站 設(shè)計百度下載2022新版安裝
  • 外貿(mào)電子商務(wù)網(wǎng)站建設(shè)軟件外包公司排行
  • 天津網(wǎng)站開發(fā)公司 智善美科技網(wǎng)絡(luò)廣告營銷策略
  • google提交網(wǎng)站入口關(guān)鍵詞推廣優(yōu)化外包
  • h5游戲中心seo優(yōu)化需要多少錢
  • 昆明seo公司網(wǎng)站不用流量的地圖導航軟件
  • 一個網(wǎng)站用兩個域名谷歌搜索引擎為什么打不開
  • 開發(fā)一個網(wǎng)站多少錢友鏈查詢站長工具
  • 佛山網(wǎng)站優(yōu)化運營房地產(chǎn)銷售
  • 合肥市網(wǎng)站建設(shè)優(yōu)化營商環(huán)境條例心得體會
  • 網(wǎng)站模板下載器成都關(guān)鍵詞排名推廣
  • 大氣的企業(yè)網(wǎng)站模板視頻推廣
  • 怎么用dw做地圖網(wǎng)站百度推廣需要什么條件