<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之旅 廣告
                ## 單表多租戶 多租戶有多種實現方式,最簡單是單表里通過tenant_id字段區分當前租戶。因此每次數據庫操作都必須帶上此租戶值。有時候為了安全考慮,交給程序員手工每次設置租戶id會容易出錯, BeetlSQL有倆種方法來實現自動賦值。 第一種是在POJO自動里定義tenantId屬性,負責可以通過注解 ```java @Data @Table(name="order") public class Order extends TeantValue{ @AssingId private String id; } ``` 這里的TeantValue 定義如下 ```java @TeantId private String teantId; ``` 這里的@TeanId是用戶自定義的BeetlSQL 注解,可以參考《數據模型》中的《AttributeConvert》 自定義一個注解動態賦值 ```java @Retention(RetentionPolicy.RUNTIME) @Target(value = {ElementType.METHOD, ElementType.FIELD}) @Builder(TeantIdConvert.class) public static @interface TeantId { } ``` 如上申明一個@TeantId,動態給POJO賦值租戶信息,實現類TeantIdConvert ```java public static class TeantIdConvert implements AttributeConvert { public Object toDb(ExecuteContext ctx, Class cls, String name, Object pojo) { String teantId= (String)getCurrent(); //getCurrent方法獲取租戶id return teantId; } } ``` 對于SQL語句里自動賦值,可以利用SQLManagerExetned(參考SQLManager),為所有的beetlsql提供額外的租戶參數,比如 ```java public class MyParaExtend extends ParaExtend { public Map morePara(ExecuteContext ctx){ HashMap map = new HashMap(); map.put("tenantId",TenantLocal.get()); return map; } } ``` sqlManger.getSqlManagerExtend().setParaExtend(new MyParaExtend()); 則生效。sql模板里則可以自動使用 tenantId參數 ```sql select * from order where tenant_id=#{teantId} ``` 如果想把分庫做的酷炫,如上方式可以換一種實現方式,這里提供一個基本思路,未來有時間,會把例子寫到源碼samples里 使用jsr269注解處理器,可以在任意POJO上自動增加teantId注解,比如 ```java @Data @Table(name="order") @Teantable //編譯時刻自動代碼生成 public class Order extends TeantValue{ @AssingId private String id; } ``` @Teantable注解如果能被注解處理器識別,自動生成如下代碼而不需要手工編寫 ```java @Data @Table(name="order") public class Order extends TeantValue{ @AssingId private String id; @TeantId private String teantId; } ``` > 我的另外一本書包含了jsr269注解處理器的說明
                  <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>

                              哎呀哎呀视频在线观看