<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 主鍵 > 表格主鍵以數據庫定義為準,POJO必須嚴格的以數據庫定義來使用@AutoId,@AssingId,和@SeqId。如果是視圖,想要一個邏輯主鍵,這必須使用@Table(isView=true),BeetlSQL 則認為@AssingId標注的屬性的是視圖主鍵 @AutoID,作用于屬性字段或者getter方法,告訴beetlsql,這是自增主鍵,對應于數據自增長 ```java @AutoID Integer myId; ``` @AssignID,作用于屬性字段或者getter方法,告訴beetlsql,這是程序設定 ```java @AssignID Integer id; ``` 代碼設定主鍵允許像@AssignID 傳入id的生成策略以自動生成序列,BeetlSQL默認提供了一個snowflake算法,一個用于分布式環境的id生成器([https://github.com/twitter/snowflake](https://github.com/twitter/snowflake)),生成器的名字是simple ```java @AssignID("simple") @AssignID() Long id; ``` 這個simple 算法不能用在實際項目里,因為實際雪花算法需要配置工作機器ID,beetlsql的simple生成器沒有提供 你可以實現自己的id生成策略,比如最常用的UUID ```java sqlManager.addIdAutonGen("uuid", new IDAutoGen(){ @Override public Object nextID(String params) { return UUID.randomUUID().toString(); } }); ``` ```java @AssignID("uuid") String id; ``` 需要注意Java自帶的 UUID可能有性能上的問題,因為UUID的隨機數來自于操作系統生成,因為操作系統生成不了足夠的uuid導致性能能下降。可以搜索uuid+urandom 從網上查找改善Java內置UUID的性能,或者使用第三方的UUID,如`uuid-creator` - @SeqID(name="xx_seq"),告訴beetlsql,這是序列主鍵,目前只有H2,Oracle和Postgres或者DB2使用序列主鍵,以源碼單元測試為例子,如下DeviceDetail具有id,序列名稱是`label_sequence` ```java @Data public abstract class BaseSeqIdEntity<ID> extends BaseEntity implements Serializable{ @SeqID(name="label_sequence") protected ID id; } @Data @Table(name="device_detail") public class DeviceDetail extends BaseSeqIdEntity<Integer>{ String json; } ``` IdTest的seqIdTest如下 ```java public class IdTest extends BaseTest { @Test public void seqIdTest(){ DeviceDetail data = new DeviceDetail(); data.setJson("{}"); sqlManager.insert(data); Assert.assertNotNull(data.getId()); System.out.println(data); } } ``` 執行后,可以看到H2的輸出 ```java ┏━━━━━ Debug [deviceDetail.$insert] ━━━ ┣ SQL: insert into device_detail (ID ,JSON ) values (NEXT VALUE FOR label_sequence ,? ) ┣ 參數: [{}] ┣ 位置: org.beetl.sql.id.IdTest.seqIdTest(IdTest.java:47) ┣ 時間: 7ms ┣ 更新: [1] ┗━━━━━ Debug [deviceDetail.$insert] ━━━ ``` H2Style.getSeqValue返回了序列名稱對應的求值語句,Oralce,Postgres類似,如下是DbStyle的getSeqValue實現 ```java public class H2Style extends AbstractDBStyle { @Override public String getSeqValue(String seqName) { return "NEXT VALUE FOR "+seqName; } } public class OracleStyle extends AbstractDBStyle { @Override public String getSeqValue(String seqName) { return seqName+".nextval"; } } public class OracleStyle extends AbstractDBStyle { @Override public String getSeqValue(String seqName) { return "nextval('" + seqName + "')"; } } ``` 對于支持多種數據庫的,這些annotation可以疊加在一起,但作為跨庫更好的選擇是使用@AssignId,并自定義個id生成策略
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看