<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 強制使用數據源 SQLMannager默認更新操作走主庫,查詢操作走從從庫,如果想改變規則,可以從新實現ConnectionSource,或者使用forceDataSource強制使用某一個數據庫 SQLMannager提供了forceDataSource(DBRunner)接口來強制使用某個數據源操作,比如主從庫,默認查詢走從庫,你可以強制查詢走主庫,或者某個更新操作,想操作從庫而不是主庫 DBRunner默認提供如下實現,用戶也可以自己實現DBRunner的getTargetDataSource方法 * MasterDBRunner, 操作使用主庫 * SlaveDBRunner 操作使用第一個從庫 * EachSlaveDbRunner 操作會使用每個從從庫,比如insert語句,那么會在每個從庫調用多次insert 比如如下初始化masterSlaveSqlManger(本例子代碼來自單元測試ForceDataSourceTest) ``` ConnectionSource cs = ConnectionSourceHelper.getMasterSlave(master,new DataSource[]{slave,slave2}); SQLManagerBuilder builder = new SQLManagerBuilder(cs); builder.setDbStyle(new H2Style()); builder.setNc(new UnderlinedNameConversion()); builder.setInters(new Interceptor[]{new MyInterceptor()}); masterSlaveSqlManger = builder.build(); ``` 如下代碼表示查詢主庫 ```java User user = masterSlaveSqlManger.forceDataSource(new DBRunner.MasterDBRunner<User>(){ @Override public User run(SQLManager sm) { return sm.single(User.class,1); } }); ``` 如下代碼表示在從庫插入一個User ```java User user = new User(); user.setName("test"); user.setId(19); masterSlaveSqlManger.forceDataSource(new DBRunner.SlaveDBRunner<Object>(){ @Override public Object run(SQLManager sm) { sm.insert(user); return null; } }); ``` 如下代碼會在每個從庫都執行insert語句 ```java User user = new User(); user.setName("test"); user.setId(29); //遍歷每個slave,并執行 masterSlaveSqlManger.forceDataSource(new DBRunner.EachSlaveDbRunner(){ @Override public Object run(SQLManager sm) { sm.insert(user); return null; } }); ``` 用戶也可以自己擴展DBRunner的getTargetDataSource方法來動態判斷使用哪個庫,如下根據id是否為偶數來判斷走那個庫 ```java Integer id = 1; User user = masterSlaveSqlManger.forceDataSource(new DBRunner<User>(){ @Override protected DataSource getTargetDataSource(SQLManager sqlManager) { return id%2==0?sqlManager.getDs().getMasterSource():sqlManager.getDs().getSlaves()[0]; } @Override public User run(SQLManager sm) { User user = sm.unique(User.class,id); return user ; } }); ```
                  <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>

                              哎呀哎呀视频在线观看