整合beetlSQL和 druid
jdk:8
springboot:2.2.13.RELEASE
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--lombok start-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<!--beetlsql-->
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>sql-springboot-starter</artifactId>
<version>3.12.5-RELEASE</version>
</dependency>
yml配置文件
sqlManager的basePackage对应的数据源ds不同
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 主库数据源
default:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
second:
# 从数据源开关/默认关闭
enabled: true
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test02?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# beetlsql配置
beetlsql:
# sqlManagers: 自定义名称,逗号前不能有空格
sqlManagers: sqlManager1,sqlManager2
sqlManager1:
ds: defaultDS
#默认为/sql, 作为存放sql文件的根目录,位于/resources/sql目录下
sqlPath: sql/databasea
#beetlsql.basePackage:默认为com,此选项配置beetlsql.daoSuffix来自动扫描com包极其子包下的所有以Dao结尾的Mapper类。以本章例子而言,你可以配置“com.bee.sample.ch5.dao”
basePackage: com\example\demo\mapper\mappera
# beetlsql.nameConversion: 默认是org.beetl.sql.core.UnderlinedNameConversion,能将下划线分割的数据库命名风格转化为java驼峰命名风格,还有常用的DefaultNameConversion,数据库命名完全和Java命名一直,以及JPA2NameConversion,兼容JPA命名
nameConversion: org.beetl.sql.core.DefaultNameConversion
#beetlsql.dbStyle :数据库方言,默认是org.beetl.sql.core.db.MySqlStyle.对应不同的数据库,其他还有OracleStyle,PostgresStyle,SqlServerStyle,DB2SqlStyle,SQLiteStyle,H2Style
dbStyle: org.beetl.sql.core.db.MySqlStyle
#beetl-beetlsql.dev:默认是true,即向控制台输出执行时候的sql,参数,执行时间,以及执行的位置,每次修改sql文件的时候,自动检测sql文件修改.
dev: true
# 指明 mapper 类的结尾,扫描到以 Mapper 结尾的类会为其自动生成代理类,注册为 Spring 的 Bean
# 默认扫描 Mapper 结尾,可不配置。如果你不是 xxxMapper 这样以 Mapper 结尾的,则需要配置
daoSuffix: Mapper
# sql 文件编码
sqlFileCharset: utf-8
sqlManager2:
ds: secondDS
sqlPath: /sql/databaseb
basePackage: com.example.demo.mapper.mapperb
nameConversion: org.beetl.sql.core.DefaultNameConversion
dbStyle: org.beetl.sql.core.db.MySqlStyle
dev: true
config文件(生成数据源)
/**
* druid 配置多数据源
*/
@Configuration
public class DruidConfig {
@Bean(name = "defaultDS")
@ConfigurationProperties("spring.datasource.druid.default")
public DataSource DEFAULTDataSource() {
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return dataSource;
}
@Bean(name = "secondDS")
@ConfigurationProperties("spring.datasource.druid.second")
@ConditionalOnProperty(prefix = "spring.datasource.druid.second", name = "enabled", havingValue = "true")
public DataSource SECONDDataSource() {
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return dataSource;
}
}
Mapper接口文件(文件名称后缀必须和beetlsql.daoSuffix相同)
两个一样
/*SqlResource:md文件名,默认User*/
@SqlResource("Adatabase")
public interface AMapper extends BaseMapper<User> {
User queryUser(User user);
}
md文件(文件名和@SqlResource一样)
markdown 中使用```sql是可选的,好处在于帮助 IDE 或者其他工具能对 sql 进行 高亮 和语法校验
queryUser
===
* 查询user
select * from user where 1=1
-- @if(!isEmpty(id)){
and id = #{id}
-- @}
-- @if(!isEmpty(name)){
and name = #{name}
-- @}