溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

BeetlSQL3.0.0如何輕松集成Spring

發(fā)布時間:2021-12-22 14:23:28 來源:億速云 閱讀:207 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“BeetlSQL3.0.0如何輕松集成Spring”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“BeetlSQL3.0.0如何輕松集成Spring”這篇文章吧。

單數(shù)據(jù)源

首先引入Starter,目前版本是3.0.0-M5

<dependency>
	<groupId>com.ibeetl</groupId>
	<artifactId>sql-springboot-starter</artifactId>
	<version>${version}</version>
</dependency>

然后編輯Spring的配置文件application.properties ,如下(參考BeetlSqlConfig)

beetlsql = sqlManager1
beetlsql.sqlManager1.ds=ds1
beetlsql.sqlManager1.basePackage=org.beetl.sql.springboot.simple
beetlsql.sqlManager1.dbStyle=org.beetl.sql.core.db.MySqlStyle
  • 第一行表示需要配置一個SQLManager實例,bean名稱為sqlManger1

  • 第二行表示使用名稱ds1的數(shù)據(jù)源

  • 第三行可選,表示mapper類在org.beetl.sql.springboot.simple下

  • 第四行表示數(shù)據(jù)庫是MySql

其他可選的配置如下

beetlsql.sqlManager1.daoSuffix=Mapper
beetlsql.sqlManager1.nameConversion=org.beetl.sql.core.UnderlinedNameConversion
beetlsql.sqlManager1.sqlPath=sql

分別表示Mapper的類的后綴是Mapper,使用UnderlinedNameConversion作為默認的列名和屬性名的轉(zhuǎn)化,以及SQL文件放到classpath的sql下

編寫java類,配置好ds1數(shù)據(jù)源

@Bean(name = "ds1")
    public DataSource datasource(Environment env) {
        HikariDataSource ds = new HikariDataSource();
        ds.setJdbcUrl(env.getProperty("spring.datasource.url"));
        ds.setUsername(env.getProperty("spring.datasource.username"));
        ds.setPassword(env.getProperty("spring.datasource.password"));
        ds.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
        return ds;
    }

然后,你就可以在代碼中使用BeetlSQL,比如SimpleTest

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SimpleApplication.class)
@Transactional
public class SimpleTest {
    @Autowired
    SQLManager sqlManager;
    @Autowired
    SimpleUserInfoMapper userInfoMapper;
    @Test
    public void test(){
        sqlManager.single(UserInfo.class,1);
        userInfoMapper.single(1);
    }
}

主從庫

BeetlSQL在多庫系統(tǒng)里,如果多庫是一個業(yè)務庫,則使用一個SQLManager管理,比如主從,或者多租戶,以主從庫為例子,SpringBoot的配置如下(多租戶例子參考工程源碼實例)

beetlsql = sqlManager1
beetlsql.sqlManager1.ds=masterDs,slaveDs1,slaveDs2

主要就是ds會有多個數(shù)據(jù)源配置,第一個為主庫,后面為從庫,如果事務是只讀事務且是查詢操作,則BeetlSQL將使用從庫操作

@Bean(name = "masterDs")
    public DataSource master(Environment env) {
        HikariDataSource ds = new HikariDataSource();
        ds.setJdbcUrl(env.getProperty("spring.datasource.url"));
        ds.setUsername(env.getProperty("spring.datasource.username"));
        ds.setPassword(env.getProperty("spring.datasource.password"));
        ds.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
        return ds;
    }

    @Bean(name = "slaveDs1")
    public DataSource slaveDs1(Environment env) {
       // 省略
        return ds;
    }

    @Bean(name = "slaveDs2")
    public DataSource slaveDs2(Environment env) {
     // 省略
        return ds;
    }

動態(tài)SQLManager

如果系統(tǒng)有多個業(yè)務庫,或者有傳統(tǒng)數(shù)據(jù)庫+SQL查詢引擎+物聯(lián)網(wǎng)時序庫,可以分別建立多個SQLManager,比如

beetlsql = sqlManager1,sqlManager2
beetlsql.sqlManager1.ds = ds1
beetlsql.sqlManager2.ds = queryDs

BeetlSQL也支持一個SQLManager,管理多個業(yè)務庫,內(nèi)部實現(xiàn)是通過ConditionalSQLManager來實現(xiàn)的,動態(tài)決定使用哪個SQLManager 這時候只需要簡單配置即可

beetlsql = sqlManager
beetlsql.sqlManager.dynamic=sqlManager1,sqlManager2
beetlsql.sqlManager.basePackage=org.beetl.sql.springboot.dynamic
beetlsql.sqlManager1.ds=ds1
beetlsql.sqlManager2.ds=ds2

第一行申明了了一個SQLMananger實例,名稱為sqlManager 第二行申明此SQLManager包含多個SQLManager,第一個為默認 后面三行同前所述。 當申明dynamic后,sqlManager的實現(xiàn)類是ConditionalSQLManager,因此使用哪個SQLManager取決于操作的實體上的注解@TargetSQLManager(此策略可以修改)`

@Table(name="user")
@TargetSQLManager("sqlManager1")
@Data
public class UserInfoInDs1 {
    @AssignID
    private Integer id;
    private String name;

}
@Table(name="user")
@TargetSQLManager("sqlManager2")
@Data
public class UserInfoInDs2 {
    @AssignID
    private Integer id;
    private String name;

}

測試代碼 DynamicTest

public class DynamicTest {
    @Autowired
    @Qualifier("sqlManager")
    SQLManager sqlManager;
    
    @Test
    public void test(){
 
        sqlManager.single(UserInfoInDs1.class,1);
        sqlManager.single(UserInfoInDs2.class,1);
    
    }
}

以上是“BeetlSQL3.0.0如何輕松集成Spring”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI