SpringBoot集成电科金仓数据库(上):环境搭建与基础配置
目录
- SpringBoot集成电科金仓数据库(上):环境搭建与基础配置
- 引言
- 一、环境准备
- 二、创建SpringBoot项目
- 三、配置数据库连接
- 四、实体类与DAO层实现
- 1. 实体类 User.java
- 2. DAO接口 UserDao.java
- 3. DAO实现类 UserDaoImpl.java
- 五、测试代码
- 六、运行与验证
- 小结
SpringBoot集成电科金仓数据库(上):环境搭建与基础配置
引言
在企业级应用开发中,数据库的选择与集成是至关重要的一环。国产数据库如电科金仓(Kingbase)因其高性能、高安全性及良好的国产化适配能力,越来越受到开发者的青睐。本文将详细介绍如何在SpringBoot项目中集成Kingbase数据库,完成环境搭建、依赖配置与基础数据操作。
一、环境准备
在开始编码之前,请确保以下环境已就绪:
- JDK 1.8+
- Maven 3.6+
- IntelliJ IDEA(或其他Java IDE)
- 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层实现到单元测试的全过程。下一篇我们将进一步探讨事务管理、连接池优化与高级查询功能。