此博客讲述了SpringBoot整合BeeltSQL3和MySQL数据库的例子

1.创建工程

直接利用IDEA工具中的Spring工程初始化工具进行创建

在这里插入图片描述

Java版本我们这里选择的是JDK8,然后点击下一步,来到依赖选择项。

2.依赖配置

​ 项目中选择的SpringBoot版本为2.4.11,还有其他的一些依赖项如下所示:

	<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.ibeetl/sql-springboot-starter -->
<dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>sql-springboot-starter</artifactId>
    <version>3.10.1-RELEASE</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>4.0.3</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

​ 其中比较重要的是spring-boot-starter-jdbc;sql-springboot-starter;这两个依赖,其他的一些依赖都是Boot工程最常用的工具,比如MySQL的链接驱动、lombok插件等等。

3.配置文件编写

​ 我们可以在BeetlSQL3的官方中找到关于集成SpringBoot的一些说明文档,官方是使用的H2数据库与HikariCP数据库连接池作为示例来讲解的。其实我们使用MySQL也大同小异,无非是在数据源配置那一块儿将其配置成自己想要使用的数据库就行。在配置文件中我们可以使用官方所讲解的利用HikariCP数据库连接池来获取一个DataSource,也可以直接使用DataSourceBuilder来进行创建。

a)新建一个配置类

​ 在config包下新建一个SimpleDataSourceConfig配置类,注意要加上@Configuration注解,表示它是一个配置项。其中比较重要的配置方法就是官方手册中给出的public DataSource datasource(Environment env)方法,此方法是返回注入了一个我们自己的数据源。具体代码如下:

@Primary
@Bean(name = "ds1")
public DataSource dataSource(Environment environment) {
    HikariDataSource dataSource = new HikariDataSource();
    String url = environment.getProperty("spring.datasource.url");
    //spring.datasource.username=root
    //spring.datasource.password=root
    String username = environment.getProperty("spring.datasource.username");
    String password = environment.getProperty("spring.datasource.password");
    String className = environment.getProperty("spring.datasource.driver-class-name");
    dataSource.setJdbcUrl(url);
    dataSource.setUsername(username);
    dataSource.setPassword(password);
    dataSource.setDriverClassName(className);
    return DataSourceBuilder.create().username(username).password(password).url(url).driverClassName(className).build();
}

​ 我这里给出了两个数据源的构建,一个是跟官方的一样,使用HikariCP数据库连接池来构建,另一个是使用DataSourceBuilder来进行构建,这两种方法再后面的测试中都是可以用的。

b)application.properties文件配置

​ 在properties文件中比较重要的配置就是与MySQL数据库的配置和BeetlSQL的配置,首先我们要指定我们的数据库连接地址以及我们数据库的用户名和密码,还有驱动类型。如下:

spring.application.name=beet-study
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/beet_study
spring.datasource.username=root 
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

​ 其次是配置关于BeetlSQL的相关信息,这里的配置信息在官方的手册中也给了出来,我们可以直接拿来用。具体如下:

# beetlsql = sqlManager1 旧版的配置
beetlsql.sqlManagers=sqlManager1 # 新版配置
beetlsql.sqlManager1.ds=ds1
beetlsql.sqlManager1.basePackage=org.beetl.sql.springboot.simple

​ 第一个是配置一个sqlManager,第二个是指明sqlManager的数据源,这个名称跟我们上面在配置类中写的自动注入数据源的name要一致,也就相当于为它指定了我们自己配置的数据源,第三个是说明mapper文件的存放包路径。

​ 完成了以上的相关配置工作,我们的集成工作就差不多已经完成了,下面开始编写测试代码。

4.功能测试

​ 在对于持久层框架的测试无非就是几个增删改查,还有测试其中的一些相关核心功能是否能够正常使用,这里我们只测试了sqlManager的使用和Mapper的使用。

pojo类的编写

​ 在最后面给出了我们测试用的SQL脚本,SQL脚本也是用的官方手册中给出的。表中有4个字段分别是:id,name,department_id,create_time。pojo类就是对数据库中的数据模型做一个抽象表示。学过MyBatis框架的话这一步都没什么问题。不想手写的也可以研究下官方给出的代码生成工具,或者用其他的生成工具生成,然后修改即可。这里直接给出代码:

@Data
@Table(name = "sys_User")
public class UserInfo {
    @Column("id")
    private Integer id;
    @Column("name")
    private String name;
    @Column("department_id")
    private Integer departmentId;
    @Column("create_time")
    private Date createTime;
}

​ 关于其中的一些注解的含义,在官方手册中已经给了出来,查询下手册即可。

mapper编写

​ 在dao包的目录下,我们新建一个UserMapper接口,这个接口也需要继承BeetlSQL中给我们提供的BaseMapper接口,跟我们使用MyBatis-Plus一样。

public interface UserMapper extends BaseMapper<UserInfo>

service编写

​ 在Service中我们直接注入mapper和SQLManager,注入后IDEA可能会提示报红无法自动注入,我们可以不用理会,对于强迫症的同学可以自行处理一下。

@Autowired
private UserMapper userMapper;

@Autowired
private SQLManager sqlManager;

​ 我们就编写两个测试方法,一个用来测试SQLManager是否能够正常使用,另一个测试利用mapper文件来进行查询操作。

public UserInfo test(){
    return userMapper.single(1);
}

public void testSqlManager(){
    sqlManager.single(UserInfo.class,1);
}

方法测试

​ 在测试类中进行测试,直接注入Service方法,调用我们编写的测试方法即可进行测试;

@Autowired
UserService userService;

@Test
// 测试mapper
void contextLoads() {
    userService.test();
}

@Test
// 测试SQLManager
void testSqlManager(){
    userService.testSqlManager();
}

​ 分别执行我们的测试代码,可以看到在控制台中打印了BeetlSQL执行的日志语句

在这里插入图片描述
在这里插入图片描述

​ 功能完成良好。至此我们关于SpringBoot+BeetlSQL3+MySQL的集成测试就已经完成。

SQL脚本文件用于测试

DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user`
(
    `id`            int(11) NOT NULL AUTO_INCREMENT,
    `name`          varchar(255) DEFAULT NULL,
    `department_id` int(11)      DEFAULT NULL,
    `create_time`   datetime     DEFAULT NULL,
    PRIMARY KEY (`id`)
);

BEGIN;
INSERT INTO `sys_user`
VALUES (1, 'lijz', 1, NULL);
INSERT INTO `sys_user`
VALUES (2, 'lucy', 1, NULL);
INSERT INTO `sys_user`
VALUES (3, 'bear', 2, NULL);
INSERT INTO `sys_user`
VALUES (4, 'mike', 1, NULL);
INSERT INTO `sys_user`
VALUES (5, 'lisan', 1, NULL);
INSERT INTO `sys_user`
VALUES (6, 'xb', 1, NULL);
INSERT INTO `sys_user`
VALUES (7, 'duanwu', 2, NULL);
INSERT INTO `sys_user`
VALUES (8, 'fenh', 1, NULL);
INSERT INTO `sys_user`
VALUES (9, 'lj', 2, NULL);
INSERT INTO `sys_user`
VALUES (10, 'gshen', 1, NULL);
INSERT INTO `sys_user`
VALUES (11, 'lihui', 1, NULL);
COMMIT;
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐