国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Java通用Mapper UUID簡單示例

Java通用Mapper UUID簡單示例

2021-06-24 10:36isea533 Java教程

今天小編就為大家分享一篇關于Java通用Mapper UUID簡單示例,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

#通用 mapper uuid 簡單示例

##不可回寫的 uuid

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

?
1
@generatedvalue(generator = "uuid")

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

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

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

##可回寫的 uuid

最簡單的可回寫 uuid 方式就是像 oracle 序列那樣直接寫一個返回 uuid 的 sql 就能實現,這是第一種寫法:

?
1
2
3
@id
@generatedvalue(strategy = generationtype.identity,generator = "select uuid()")
private string id;

使用這種方式的時候必須注意,由于是執行 sql,所以底層是使用<selectkey> 實現的,并且因為需要先得到 uuid 的值才能插入數據庫,因此還需要配置order屬性,使用 java 方式配置時,用下面的方式進行配置:

?
1
2
3
4
5
config config = new config();
// 其他配置
// 主鍵自增回寫方法執行順序,默認after,可選值為(before|after)
config.setorder("before");
mapperhelper.setconfig(config);

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

?
1
2
3
4
5
6
7
8
9
<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 中的類型要和數據庫類型匹配。

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

##通用主鍵 sql 配置

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

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

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

默認提供的identity 可選值參考文檔 generationtype.identity 。

這個參數除了這些可選值外,還可以是可以執行的 sql,也就是說最前面的配置方式可以改為:

?
1
2
3
@id
@generatedvalue(strategy = generationtype.identity)
private string id;

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

?
1
2
3
4
5
6
config config = new config();
// 其他配置
config.setidentity("select uuid()");
// 主鍵自增回寫方法執行順序,默認after,可選值為(before|after)
config.setorder("before");
mapperhelper.setconfig(config);

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

?
1
2
3
4
5
6
7
8
9
10
<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>

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

在這種情況下,如果換了數據庫,只需要修改一下配置就能解決,例如 sql server 的:

?
1
identity=select replace(newid(), '-', '')

##小結

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/isea533/article/details/53011890

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: www.天天操.com | 国产精品美女视频 | 亚洲在线一区二区 | 在线观看一区二区视频 | 欧美视频免费 | 日韩中文字幕在线视频 | 欧美综合久久 | 日韩视频一区二区 | 亚洲国产精品久久久 | 久久久久久久久久久久久国产 | 亚洲精品视频区 | 久久九 | 亚洲国产精品视频一区 | 亚洲国产精品99久久久久久久久 | caoporn免费| 久久国产福利 | 国产精品一区二区三区四区五区 | 国产精品成人国产乱一区 | 国产午夜视频在线观看 | 快色视频在线观看 | 亚洲天堂免费在线 | 国产欧美高清在线观看 | 极品美女销魂一区二区三区 | 成人午夜小视频 | 国产乱码精品一区二区三区中文 | 午夜电影在线看 | 日韩免费在线 | 欧美一级全黄 | 在线观看成人 | 91视频免费 | 国产精品欧美一区二区三区不卡 | 日本不卡免费一区二区三区综合久久 | 秋霞成人 | 午夜草逼 | 正在播放国产一区 | 日韩电影免费在线观看 | 美女一级| 玖玖精品视频 | 涩涩涩久久久成人精品 | 黄色一级免费片 | 久久这里只有精品免费 |