数据库整合包:gitee地址:https://gitee.com/lixd62/boot4j
快速引入
- 为方便演示,我们需要在数据库创建一个名叫
bootdemo
的数据库,并创建一张user表。
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`age` int(11) NULL DEFAULT NULL,
`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`deleted` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '测试', 25, '1', '0');
- 使用gradle在idea中创建一个全新的空项目。
- 引入boot4j-database依赖,刷新后就能在左侧外部库里面看到引入的包。
plugins {
id 'java'
}
group = 'com.itcm'
version = '1.0-SNAPSHOT'
// 配置仓库
repositories {
mavenLocal()
maven {
url 'https://maven.aliyun.com/repository/gradle-plugin'
}
maven {
url "https://maven.aliyun.com/nexus/content/groups/public/"
}
mavenCentral()
gradlePluginPortal()
}
dependencies {
implementation "com.boot4j:boot4j-core:1.0.0"
implementation "com.boot4j:boot4j-database:1.0.0"
testImplementation 'junit:junit:4.13.1'
// Spring
implementation 'org.springframework:spring-tx:5.3.23'
implementation 'org.springframework:spring-jdbc:5.3.23'
implementation 'org.springframework:spring-context:5.3.23'
// YAML
implementation("org.yaml:snakeyaml:2.0")
// Database
implementation 'mysql:mysql-connector-java:8.0.29'
implementation 'com.mchange:c3p0:0.9.5.5'
implementation 'org.mybatis:mybatis:3.5.2'
implementation 'com.baomidou:mybatis-plus:3.5.2'
implementation 'org.mybatis:mybatis-spring:2.0.7'
// mybatis-plus不支持join语句,这个是网友采用lambda表达式实现的join wrapper
implementation 'com.github.yulichang:mybatis-plus-join:1.2.4'
}
test {
useJUnitPlatform()
}
- 使用插件EasyCode构建Mybatis-plus必要的dao层,entity层,service层,也可以手动创建。
注意:
- 单独创建一个database目录存放与数据库访问相关的类,方便管理。
- 生成模版选MybatisPlus.
- 不需要生成Contoller层,因为Controller层在boot4j-Bridge模块中实现整合。
- 编写provider,使用spring将上一步生成的bean整合起来。
package com.itcm.bootdemo.database;
import com.boot4j.database.api.spi.AbstractDatabaseProvider;
/**
* bootdemo数据库提供程序
*
* @author LiXudong
* @date 2024/02/27
*/
public class BootdemoDatabaseProvider extends AbstractDatabaseProvider {
public BootdemoDatabaseProvider() {
super();
}
}
- 利用SPI原理发布Provider。
- 创建boot4j-database.properties,并填写数据源信息。以及log4j.properties
注意:
这个地方实际是通过spi拿到com.itcm.bootdemo.database.BootdemoDatabaseProvider类后,解析其包名层级,获取父级的父级名称作为此处的数据源名称。
- 编写单元测试
package com.itcm.bootdemo.database;
import com.boot4j.database.api.DatabaseBeanFactory;
import com.itcm.bootdemo.database.service.UserService;
import org.junit.Test;
public class DatabaseTest {
@Test
public void queryUser(){
UserService userService = DatabaseBeanFactory.getInstance().getBean(UserService.class);
System.out.println(userService);
}
}
- 测试成功