当前位置: 首页 > news >正文

SpringBoot集成电科金仓数据库(上):环境搭建与基础配置

目录

    • SpringBoot集成电科金仓数据库(上):环境搭建与基础配置
      • 引言
      • 一、环境准备
      • 二、创建SpringBoot项目
      • 三、配置数据库连接
      • 四、实体类与DAO层实现
        • 1. 实体类 User.java
        • 2. DAO接口 UserDao.java
        • 3. DAO实现类 UserDaoImpl.java
      • 五、测试代码
      • 六、运行与验证
      • 小结

SpringBoot集成电科金仓数据库(上):环境搭建与基础配置

引言

在企业级应用开发中,数据库的选择与集成是至关重要的一环。国产数据库如电科金仓(Kingbase)因其高性能、高安全性及良好的国产化适配能力,越来越受到开发者的青睐。本文将详细介绍如何在SpringBoot项目中集成Kingbase数据库,完成环境搭建、依赖配置与基础数据操作。
在这里插入图片描述


一、环境准备

在开始编码之前,请确保以下环境已就绪:

  1. JDK 1.8+
  2. Maven 3.6+
  3. IntelliJ IDEA(或其他Java IDE)
  4. Kingbase数据库(已安装并启动)

二、创建SpringBoot项目

使用Spring Initializr或IDE创建SpringBoot项目,选择以下依赖:

  • Spring Web
  • Spring Data JDBC
  • Kingbase8 JDBC Driver

或手动在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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>kingbase-springboot-demo</artifactId><version>1.0.0</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.11</version><relativePath/></parent><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>cn.com.kingbase</groupId><artifactId>kingbase8</artifactId><version>8.6.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

三、配置数据库连接

application.properties中配置Kingbase连接信息:

# 数据库驱动
spring.datasource.driver-class-name=com.kingbase8.Driver# 数据库连接URL
spring.datasource.url=jdbc:kingbase8://localhost:54321/test# 用户名和密码
spring.datasource.username=system
spring.datasource.password=your_password_here

四、实体类与DAO层实现

1. 实体类 User.java
package com.example.entity;public class User {private Long id;private String name;public User() {}public User(Long id, String name) {this.id = id;this.name = name;}// Getter 和 Setterpublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +'}';}
}
2. DAO接口 UserDao.java
package com.example.dao;import com.example.entity.User;
import java.util.List;public interface UserDao {boolean insertUser(User user);boolean deleteById(Long id);boolean updateUser(User user);User selectUserById(Long id);List<User> selectAllUsers();
}
3. DAO实现类 UserDaoImpl.java
package com.example.dao.impl;import com.example.dao.UserDao;
import com.example.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;@Repository
public class UserDaoImpl implements UserDao {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic boolean insertUser(User user) {String sql = "INSERT INTO test_springboot(id, name) VALUES(?, ?)";return jdbcTemplate.update(sql, user.getId(), user.getName()) > 0;}@Overridepublic boolean deleteById(Long id) {String sql = "DELETE FROM test_springboot WHERE id = ?";return jdbcTemplate.update(sql, id) > 0;}@Overridepublic boolean updateUser(User user) {String sql = "UPDATE test_springboot SET name = ? WHERE id = ?";return jdbcTemplate.update(sql, user.getName(), user.getId()) > 0;}@Overridepublic User selectUserById(Long id) {String sql = "SELECT * FROM test_springboot WHERE id = ?";return jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(User.class),id);}@Overridepublic List<User> selectAllUsers() {String sql = "SELECT * FROM test_springboot";return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));}
}

五、测试代码

创建一个单元测试类验证数据库操作:

package com.example;import com.example.dao.UserDao;
import com.example.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;@SpringBootTest
class TestSpringbootApplicationTests {@Autowiredprivate UserDao userDao;@Autowiredprivate JdbcTemplate jdbcTemplate;@Testvoid testDatabaseOperations() {// 删除表(如果存在)jdbcTemplate.execute("DROP TABLE IF EXISTS test_springboot");// 创建表jdbcTemplate.execute("CREATE TABLE test_springboot (" +"id INT PRIMARY KEY, " +"name VARCHAR(50))");// 插入数据for (int i = 1; i <= 10; i++) {userDao.insertUser(new User((long) i, "insert" + i));}// 查询所有用户List<User> users = userDao.selectAllUsers();users.forEach(System.out::println);}
}

六、运行与验证

运行测试方法,控制台应输出如下内容:

User{id=1, name='insert1'}
User{id=2, name='insert2'}
...
User{id=10, name='insert10'}

小结

本文介绍了如何在SpringBoot项目中集成Kingbase数据库,完成了从项目创建、依赖配置、实体类与DAO层实现到单元测试的全过程。下一篇我们将进一步探讨事务管理、连接池优化与高级查询功能。


文章转载自:

http://D1jzB1oG.trqhd.cn
http://zA2P0KCb.trqhd.cn
http://KL0mvMvu.trqhd.cn
http://P1kOkYu2.trqhd.cn
http://SKM6ouem.trqhd.cn
http://nerk8vHw.trqhd.cn
http://m4hgjCie.trqhd.cn
http://YHwo9E8g.trqhd.cn
http://h98YnNYl.trqhd.cn
http://XKP9j5wh.trqhd.cn
http://cF4mLK9K.trqhd.cn
http://QOUwlfUl.trqhd.cn
http://oqhrtiFM.trqhd.cn
http://RE2Rgu47.trqhd.cn
http://GnIKbCos.trqhd.cn
http://ugUqWwi3.trqhd.cn
http://oxRj1ffP.trqhd.cn
http://5LALBtGT.trqhd.cn
http://mx2boyWO.trqhd.cn
http://0Gf6UTw5.trqhd.cn
http://lVxVfRKG.trqhd.cn
http://eAB9tmdS.trqhd.cn
http://6GlSVY3i.trqhd.cn
http://RhIGlJb8.trqhd.cn
http://nxAUTYkF.trqhd.cn
http://b8YwlBvw.trqhd.cn
http://lB4WzJc3.trqhd.cn
http://VJGiF9dm.trqhd.cn
http://bmtdBxVS.trqhd.cn
http://Jdf3OcVm.trqhd.cn
http://www.dtcms.com/a/373133.html

相关文章:

  • AR 巡检与普通巡检有哪些区别,有哪些优势|阿法龙XR云平台
  • Web与Nginx网站服务二
  • [硬件电路-166]:Multisim - SPICE与Verilog语言的区别
  • 计算机毕业设计 基于Python+Django的医疗数据分析系统
  • 鸿蒙:绑定半模态页面(bindSheet)
  • 001-003 产品经理-ML应用构建-ML应用范围
  • Node中使用 fs 和 node:fs 的区别与选择
  • SYN 包在什么场景下会被丢弃
  • R 语言科研绘图 --- 其他绘图-汇总2
  • Aider AI Coding 多策略编码系统深度分析报告
  • 胜券POS:打造智能移动终端,让零售智慧运营触手可及
  • tensorflow.js 使用场景
  • 【技术教程】如何将ONLYOFFICE文档集成到使用Spring Boot框架编写的Java Web应用程序中
  • 安卓学习 之 用户登录界面的简单实现
  • 3 提示词(Prompt):大模型的交互语言
  • 微信小程序体验版,当打开调试模式正常访问,关闭之后无法访问
  • 虚拟机ubuntu22.04没有网
  • 【WorkManager】无法在 Direct Boot 模式下初始化
  • Prompt Engineering to Context Engineering
  • Swift 语法学习指南 - 与 Kotlin 对比
  • Redux和MobX在React Native状态管理中的优缺点对比
  • 新的一天开始2025.9.8
  • LAMPSecurity: CTF6靶场渗透
  • 服务器安装 LDOPE(MODIS 数据处理工具)
  • 动态线程池中修改核心线程数比当前线程数要少,会不会影响正在执行的线程任务
  • Axum文档 ~ 2.路由
  • 【C++】IO库
  • 常见的显示器接口技术
  • 如何在本地机器上使用LLM构建知识图谱(一)
  • 论文阅读:ACL 2023 MPCHAT: Towards Multimodal Persona-Grounded Conversation