崖山数据库系统YashanDB是深圳计算科学研究院自主设计研发的新型数据库管理系统,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的要求。

官网传送门:【https://www.yashandb.com

SpringBoot+druid集成YashanDB实现方案Demo_数据库

本篇博文简单记录一下使用springBoot+druid集成yashandb的过程



环境准备

1.一台已经装好yanshan数据库的服务器【安装教程此处不在赘述,详细教程请看官方文档,传送门:https://doc.yashandb.com/

SpringBoot+druid集成YashanDB实现方案Demo_数据库_02

2.创建一张user1表,并插入5条数据

SpringBoot+druid集成YashanDB实现方案Demo_数据库_03

3.下载好崖山数据库的jdbc驱动,我这里使用的版本是 yashandb-jdbc-1.6.9.jar,【下载传送门:https://download.yashandb.com/download

SpringBoot+druid集成YashanDB实现方案Demo_崖山数据库_04


构建项目

使用IDEA构建demo项目结构

SpringBoot+druid集成YashanDB实现方案Demo_druid_05

Java环境:Jdk8

Springboot版本:2.1.11.RELEASE

Maven版本:3.8.1

druid版本:1.1.21

将YashanDB驱动上传到本地的Maven私服,然后在Pom文件中引入,添加本地仓库脚本:

mvn install:install-file -Dfile=C:\Users\10641\Downloads\yashandb-jdbc-1.6.9.jar -DgroupId=com.yashandb -DartifactId=yashandb -Dversinotallow=1.6.9 -Dpackaging=jar

Maven的pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.11.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot-yashan-druid-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-yashan-druid-demo</name>
    <description>springboot-yashan-druid-demo</description>
    <url/>
    <licenses>
        <license>
            <name>MIT License</name>
            <url>https://opensource.org/licenses/MIT</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>

        <!-- ============= 数据库连接jdbc依赖 start ============= -->
        <!--阿里druid数据库链接依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.21</version>
        </dependency>
        <!--添加崖山数据库依赖-->
        <dependency>
            <groupId>com.yashandb</groupId>
            <artifactId>yashandb</artifactId>
            <version>1.6.9</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.15</version>
        </dependency>
        <!-- ============= 数据库连接jdbc依赖 end ============= -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>

</project>

或者打开IDEA的ProjectStructure,使用Libraries添加YashanDB的连接驱动,对于多模块,只需要添加到对应的模块即可。

SpringBoot+druid集成YashanDB实现方案Demo_数据库_06

application.yml配置信息:

# postgresql 环境配置
server:
  port: 8000
  max-http-request-header-size: 20480
  servlet:
    encoding:
      charset: UTF-8
      force: true
      enabled: true

#配置日志
logging:
  level:
    root: info
    # 不同目录下的日志可配置不同级别 info, error
    com.euler: debug
    org.springfromework.web: info
spring:
  application:
    name: druid-jdbc-yasdb
  mvc.async.request-timeout: 20000
  # your_host_id   修改成你的主机所在IP
	# your_ip        修改成你的数据库端口
	# your_dbname    修改成你的数据库名
	# your_username  修改成你的账户名
	# your_password  修改成你的账户密码
  datasource:
    url: jdbc:yasdb://your_host_id:your_ip/your_dbname
    username: your_username
    password: your_password
    driverClassName: com.yashandb.jdbc.Driver
    platform: yashan
    type: com.alibaba.druid.pool.DruidDataSource
    #type: org.apache.commons.dbcp2.BasicDataSource
#    initialization-mode: always
    # ============================== druid ============================== #
    druid:
      #最大活跃数
      max-active: 20
      #初始化数量
      initial-size: 1
      #最大连接等待超时时间
      max-wait: 60000
      min-idle: 1

      #通过connectionProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

      # 合并多个DruidDataSource的监控数据
      #useGlobalDataSourceStat: true

      # JDBC 配置(驱动类自动从url的mysql识别,数据源类型自动识别)
      # spring.datasource.url: 或者:
      # spring.datasource.druid.url: jdbc:mysql://192.168.1.1:3306/test?useUnicode=true&characterEncoding=UTF8

      # spring.datasource.username: 或者
      # spring.datasource.druid.username: root

      # spring.datasource.password: 或者:
      # spring.datasource.druid.password: root

      # spring.datasource.driver-class-name: 或者:
      # spring.datasource.druid.driver-class-name: com.mysql.jdbc.Driver

      # 连接池配置(通常来说,只需要修改initialSize、minIdle、maxActive
      # 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。
      # 分库分表较多的数据库,建议配置为false。removeabandoned不建议在生产环境中打开如果用SQL Server,建议追加配置)

      #打开PSCache,并且指定每个连接PSCache的大小
      poolPreparedStatements: true
      max-pool-prepared-statement-per-connection-size: 20
      # max-open-prepared-statements: 和上面的等价

      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      # max-evictable-idle-time-millis

      # SELECT 'x'
      validation-query: select 1 from dual
      # validation-query-timeout:

      test-while-idle: true
      test-on-borrow: false
      test-on-return: false

      # 配置监控统计拦截的filters,去掉后监控界面sql将无法统计,'wall'用于防火墙
#      filters: stat, wall, log4j

      # Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
      # aop-patterns: # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔

代码集成

编写YasDbDataSourceConfig代码:

@Configuration
public class YasDbDataSourceConfig {
    
    @Bean(name = "jdbcTemplate")
    @Qualifier("jdbcTemplate")
    public JdbcTemplate jdbcTemplate(@Qualifier("dataSource") DruidDataSource dds) {
        return new JdbcTemplate(dds);
    }

    @Bean(name = "dataSource")
    @Qualifier("dataSource")
    @ConfigurationProperties(prefix="spring.datasource")
    public DruidDataSource DataSource() {
        return DruidDataSourceBuilder.create().build();
    }
}

编写查询语句:

@Controller
@RequestMapping("/user")
public class queryList {
    
    @Autowired
    JdbcTemplate jdbcTemplate;

    @RequestMapping("/queryUserInfo")
    @ResponseBody
    public Object queryUserInfo(){
        String sql = "select * from USER1";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        System.out.println("执行sql:"+sql);
        System.out.println("查询成功");
        System.out.println(list.toString());
        return list;
    }
}

项目验证

启动项目测试验证,浏览器访问 http://localhost:8000/user/queryUserInfo

SpringBoot+druid集成YashanDB实现方案Demo_崖山数据库_07

到此集成结束,更多相关内容即可自己探索了。

项目git地址:https://gitee.com/junluoyu/muyu  未指定任何开源许可证,可自行创建

感谢支持!