欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java通用MapperUUID簡單示例

#通用 Mapper UUID 簡單示例

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)天水免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

##不可回寫的 UUID

通用 Mapper 中對 UUID 的用法主要提到了一種專有的寫法,如下寫法:

@GeneratedValue(generator = "UUID")

這種方式實現(xiàn)很容易理解,就是在你 insert 之前,調(diào)用 UUID 的公共方法在<bind> 標簽中生成了一個值,插入到了數(shù)據(jù)庫,由于這個值是臨時的,并沒有set到對象,因此這種方式是不支持回寫的。

由于回寫方式很常見,因此用這種方式很難滿足要求。

而且在文檔中也提到了一種可以回寫的方式,由于沒有提供例子,導(dǎo)致很多人不理解或者嘗試失敗,因此很早就有必要寫一篇如何使用可回寫 UUID 的方式(我曾經(jīng)遠程協(xié)助一個朋友解決過這個問題,這個朋友答應(yīng)我把自己的用法寫下來分享給大家,可惜食言了)。

##可回寫的 UUID

最簡單的可回寫 UUID 方式就是像 Oracle 序列那樣直接寫一個返回 UUID 的 SQL 就能實現(xiàn),這是第一種寫法:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "select uuid()")
private String id;

使用這種方式的時候必須注意,由于是執(zhí)行 SQL,所以底層是使用<selectKey> 實現(xiàn)的,并且因為需要先得到 UUID 的值才能插入數(shù)據(jù)庫,因此還需要配置ORDER屬性,使用 Java 方式配置時,用下面的方式進行配置:

Config config = new Config();
// 其他配置
// 主鍵自增回寫方法執(zhí)行順序,默認AFTER,可選值為(BEFORE|AFTER)
config.setOrder("BEFORE");
mapperHelper.setConfig(config);

使用 Spring 方式進行配置時如下:

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.isea533.mybatis.mapper"/>
  <property name="properties">
    <value>
      mappers=tk.mybatis.mapper.common.Mapper
      ORDER=BEFORE
    </value>
  </property>
</bean>

注意是增加ORDER=BEFORE這一行,如果你還有其他配置,都可以按這種方式一行一個key=value。

這么配置以后就可以正確的獲取 UUID 的值了。

##任意類型的主鍵回寫值

你可能沒注意到上面 UUID 類型的主鍵中,id 屬性的類型是String,因為select uuid() 返回的字符串,所以 Java 中的類型要和數(shù)據(jù)庫類型匹配。

因此,如果你使用一個select myId() 函數(shù)返回一個自定義類型的主鍵值,你需要讓 Java 中的類型和這個匹配。

##通用主鍵 SQL 配置

如果你每一個實體類中都有一個id 屬性,并且配置的注解都一樣,都執(zhí)行同樣的 SQL 去返回值。如果都去配置這個注解會很麻煩。想要解決這種重復(fù)性配置,最簡單的方式就是提取基類,讓使用相同方式主鍵策略的實體類繼承同一個基類就能解決。

解決方案看這里: https://github.com/guozilanTK/base/tree/master/base-id

但是如果你需要適用不同的數(shù)據(jù)庫,這種方式麻煩點的解決辦法就是針對不同的數(shù)據(jù)庫創(chuàng)建不同的基類,放在不同的項目中,但是使用相同的包名,具體應(yīng)用到生產(chǎn)環(huán)境時使用對應(yīng)數(shù)據(jù)庫的基類 jar 包就可以。除此之外還有一種方式,這種方式就是使用 IDENTITY,這個參數(shù)用于配置取回主鍵的方式。

默認提供的IDENTITY 可選值參考文檔 GenerationType.IDENTITY 。

這個參數(shù)除了這些可選值外,還可以是可以執(zhí)行的 SQL,也就是說最前面的配置方式可以改為:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;

在 Java 方式中用下面的方式進行配置:

Config config = new Config();
// 其他配置
config.setIDENTITY("select uuid()");
// 主鍵自增回寫方法執(zhí)行順序,默認AFTER,可選值為(BEFORE|AFTER)
config.setOrder("BEFORE");
mapperHelper.setConfig(config);

使用 Spring 方式進行配置時如下:

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.isea533.mybatis.mapper"/>
  <property name="properties">
    <value>
      mappers=tk.mybatis.mapper.common.Mapper
      IDENTITY=select uuid()
      ORDER=BEFORE
    </value>
  </property>
</bean>

這里仍然要注意設(shè)置ORDER=BEFORE,如果你用IDENTITY 提供的那些可選參數(shù),就不要設(shè)置(默認為AFTER),可選參數(shù)中仍然是針對的數(shù)據(jù)庫支持自增的情況,那些情況仍然是插入數(shù)據(jù)庫后才會有主鍵值,這點一定要明白!

在這種情況下,如果換了數(shù)據(jù)庫,只需要修改一下配置就能解決,例如 SQL SERVER 的:

IDENTITY=select replace(newid(), '-', '')

##小結(jié)

關(guān)于 UUID 的內(nèi)容就上面這些,還需要提醒一點的就是由于ORDER是一個全局的配置,所以使用時要注意保證所有主鍵方式都是一致的ORDER方式,主鍵自增的時候使用@GeneratedValue(generator = "JDBC") 這種方式通過 JDBC 接口去獲取返回值更好。當然使用批量插入時,MySQL 支持多主鍵回寫,但是 SqlServer 僅能返回最后一個插入的主鍵,所以選擇使用某種方式時,一定要有所了解,做好測試,避免數(shù)據(jù)庫差異帶來的問題。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對創(chuàng)新互聯(lián)的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

本文名稱:Java通用MapperUUID簡單示例
轉(zhuǎn)載來于:http://aaarwkj.com/article16/peeidg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、小程序開發(fā)、移動網(wǎng)站建設(shè)面包屑導(dǎo)航、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
日本顶级片一区二区三区| 国产一区二区三区av| 日本免费高清一区二区| 日韩精品熟妻人女亚洲一区| 992免费影院 在线观看| 高清白嫩学生自拍视频 | 激情图区亚洲一区二区| 日本理伦片一区二区| 亚洲熟妇av一区二区三区| 蜜臀国产综合久久第一页| 97视频在线观看网站| 神马影院在线观看午夜| 午夜福利片在线观看视频| 日本精品人妻一区二区三区蜜桃| 91麻豆精品国产自产| 久久精品一区二区日韩| 98精品熟女亚洲av| 久久亚洲欧洲日本韩国欧美| 日本不卡二区高清三区| 亚洲偷拍自拍在线观看| 美腿丝袜清纯唯美亚洲另类| 午夜看片福利欧美熟女| 未满18十八禁止观看| 国产熟女真实乱精品视频| 一区二区蜜桃在线观看| 一本久久精品午夜福利| 日本加勒比不卡在线视频| 91亚洲自偷观看高清| 欧美日韩亚洲综合在线| 综合av在线一区天堂| 国产亚洲精品视频在线网| 亚洲成人免费电影久久| 亚洲欧美精品综合久久99| av熟女乱一区二区三区| 亚洲综合色一区二区三区四区| 尤物视频网站在线观看| 91手机精品在线视频| 亚洲大片色一区在线观看| 免费搜索国产男女视频| 依依成人影院在线观看av| 999久久免费精品国产|