您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“BeetlSQL3.0.0如何輕松集成Spring”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“BeetlSQL3.0.0如何輕松集成Spring”這篇文章吧。
首先引入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ǒ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è)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。