BeetlSQL3.0.0 轻松集成Spring

喜欢看代码直接看代码,了解如何简单集成,主从库集成,动态SQLManager集成

SpringBoot集成非常简单,在配置好数据源的情况下,只要几行就能轻松集成SpringBoot

单数据源

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

1<dependency> 2 <groupId>com.ibeetl</groupId> 3 <artifactId>sql-springboot-starter</artifactId> 4 <version>${version}</version> 5</dependency>

然后编辑Spring的配置文件application.properties ,如下(参考BeetlSqlConfig

1beetlsql = sqlManager1 2beetlsql.sqlManager1.ds=ds1 3beetlsql.sqlManager1.basePackage=org.beetl.sql.springboot.simple 4beetlsql.sqlManager1.dbStyle=org.beetl.sql.core.db.MySqlStyle
  • 第一行表示需要配置一个SQLManager实例,bean名称为sqlManger1
  • 第二行表示使用名称ds1的数据源
  • 第三行可选,表示mapper类在org.beetl.sql.springboot.simple下
  • 第四行表示数据库是MySql

其他可选的配置如下

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

分别表示Mapper的类的后缀是Mapper,使用UnderlinedNameConversion作为默认的列名和属性名的转化,以及SQL文件放到classpath的sql下

编写java类,配置好ds1数据源

1 @Bean(name = "ds1") 2 public DataSource datasource(Environment env) { 3 HikariDataSource ds = new HikariDataSource(); 4 ds.setJdbcUrl(env.getProperty("spring.datasource.url")); 5 ds.setUsername(env.getProperty("spring.datasource.username")); 6 ds.setPassword(env.getProperty("spring.datasource.password")); 7 ds.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); 8 return ds; 9 }

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

1@RunWith(SpringRunner.class) 2@SpringBootTest(classes = SimpleApplication.class) 3@Transactional 4public class SimpleTest { 5 @Autowired 6 SQLManager sqlManager; 7 @Autowired 8 SimpleUserInfoMapper userInfoMapper; 9 @Test 10 public void test(){ 11 sqlManager.single(UserInfo.class,1); 12 userInfoMapper.single(1); 13 } 14}

主从库

BeetlSQL在多库系统里,如果多库是一个业务库,则使用一个SQLManager管理,比如主从,或者多租户,以主从库为例子,SpringBoot的配置如下(多租户例子参考工程源码实例)

1beetlsql = sqlManager1 2beetlsql.sqlManager1.ds=masterDs,slaveDs1,slaveDs2 3

主要就是ds会有多个数据源配置,第一个为主库,后面为从库,如果事务是只读事务且是查询操作,则BeetlSQL将使用从库操作

1@Bean(name = "masterDs") 2 public DataSource master(Environment env) { 3 HikariDataSource ds = new HikariDataSource(); 4 ds.setJdbcUrl(env.getProperty("spring.datasource.url")); 5 ds.setUsername(env.getProperty("spring.datasource.username")); 6 ds.setPassword(env.getProperty("spring.datasource.password")); 7 ds.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); 8 return ds; 9 } 10 11 @Bean(name = "slaveDs1") 12 public DataSource slaveDs1(Environment env) { 13 // 省略 14 return ds; 15 } 16 17 @Bean(name = "slaveDs2") 18 public DataSource slaveDs2(Environment env) { 19 // 省略 20 return ds; 21 } 22

动态SQLManager

如果系统有多个业务库,或者有传统数据库+SQL查询引擎+物联网时序库,可以分别建立多个SQLManager,比如

1beetlsql = sqlManager1,sqlManager2 2beetlsql.sqlManager1.ds = ds1 3beetlsql.sqlManager2.ds = queryDs

BeetlSQL也支持一个SQLManager,管理多个业务库,内部实现是通过ConditionalSQLManager来实现的,动态决定使用哪个SQLManager 这时候只需要简单配置即可

1beetlsql = sqlManager 2beetlsql.sqlManager.dynamic=sqlManager1,sqlManager2 3beetlsql.sqlManager.basePackage=org.beetl.sql.springboot.dynamic 4beetlsql.sqlManager1.ds=ds1 5beetlsql.sqlManager2.ds=ds2

第一行申明了了一个SQLMananger实例,名称为sqlManager 第二行申明此SQLManager包含多个SQLManager,第一个为默认 后面三行同前所述。 当申明dynamic后,sqlManager的实现类是ConditionalSQLManager,因此使用哪个SQLManager取决于操作的实体上的注解@TargetSQLManager(此策略可以修改)`

1@Table(name="user") 2@TargetSQLManager("sqlManager1") 3@Data 4public class UserInfoInDs1 { 5 @AssignID 6 private Integer id; 7 private String name; 8 9} 10 11 12 13@Table(name="user") 14@TargetSQLManager("sqlManager2") 15@Data 16public class UserInfoInDs2 { 17 @AssignID 18 private Integer id; 19 private String name; 20 21} 22

测试代码 DynamicTest

1public class DynamicTest { 2 @Autowired 3 @Qualifier("sqlManager") 4 SQLManager sqlManager; 5 6 @Test 7 public void test(){ 8 9 sqlManager.single(UserInfoInDs1.class,1); 10 sqlManager.single(UserInfoInDs2.class,1); 11 12 } 13}
点赞
收藏

评论区

加载中...

相关推荐

springboot如何集成Prometheus如何暴露Histogram来获取P99等监控指标

背景springboot如何集成Prometheus我这里不做详细描述,要想了解集成过程,可以参考一下博客:SpringBoot使用Micrometer集成Prometheus监控Java应用性能(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.cs

springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis

springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatisplus无法正常使用问题参考文章:(1)springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatisplus无法正常使用问题(https://www.oschina.net/action/Go

SpringBoot 集成Mybatis 连接Mysql数据库

记录SpringBoot集成Mybatis连接数据库防止后面忘记1.添加Mybatis和Mysql依赖      <dependency    <groupIdorg.mybatis.spring.boot</groupId    <artifactIdmybatisspringbootst

SpringBoot系列——Jackson序列化

  前言  SpringBoot提供了与三个JSON映射库的集成:GsonJacksonJSONB  Jackson是首选的默认库。  官网介绍:  https://docs.spring.io/springboot/docs/2.1.6.RELEASE/reference/html/boot

BeetlSQL3.0.0

BeetlSQL3.0.0M5主要对Spring,SpringBoot,JFinal,Solon等框架进行集成,并新增ignite,CouchBase内存数据库的支持。M6计划对更多的国产数据库支持,内存和图数据库支持。以及发布BeetlSQL3的Idea插件。<dependency<groupIdcom.ibe

SpringBoot集成Mybatis动态多数据源后,MybatisPlus的IPage失效的问题解决方案

SpringBoot集成Mybatis动态多数据源后,MybatisPlus的IPage失效的问题解决方案参考文章:(1)SpringBoot集成Mybatis动态多数据源后,MybatisPlus的IPage失效的问题解决方案(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F