简介

**JdbcTemplate **是Spring自带的一个用于简化 JDBC 编程的工具类,它封装了底层的 JDBC API,帮助你避免编写重复的代码,比如打开和关闭数据库连接、预处理语句等。如果不使用额外的ORM(对象关系映射)框架如Hibernate、mybaits,你可以使用他来访问数据库。JdbcTemplate提供了执行查询、更新、批量更新等方法,并且能够自动处理资源管理和异常转换,使得数据库操作更加简便和安全。下面是一个使用 JdbcTemplate 连接 瀚高数据库V9 的示例。

配置

引入依赖

JdbcTemplate 使用JDBC接口连接瀚高数据库,在数据库安装目录 interfaces/jdbc 下,可以获得。驱动包名称:hgdb-jdbc-x.xx.jar。该驱动包与PostgreSQL保持兼容,其中类名、类结构与 PostgreSQL 驱动完全一致,曾经运行于 PostgreSQL 的应用程序可以直接移植到当前系统使用。

如果是maven构建的项目,可以自行导入本地仓库添加依赖,示例:

#导入本地仓库
mvn install:install-file -Dfile=C:\Users\Lihq\Desktop\hgdb-jdbc-v9.0.jar
-DgroupId=com.highgo
-DartifactId=highgo-9.0.1-jdbc
-Dversion=1.0
-Dpackaging=Jar
<dependencies>
<!-- Spring Context -->
<dependency>
<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>5.3.30</version>

</dependency>

<!-- Spring JDBC -->
<dependency>
<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>5.3.30</version>

</dependency>

<!-- Apache DBCP 数据源 -->
<dependency>
<groupId>commons-dbcp</groupId>

<artifactId>commons-dbcp</artifactId>

<version>1.4</version>

</dependency>

<!-- 瀚高数据库V9 JDBC -->
<dependency>
<groupId>com.highgo</groupId>

<artifactId>highgo-9.0.1-jdbc</artifactId>

<version>1.0</version>

</dependency>

示例

db.properties

jdbc.url=jdbc:postgresql://192.168.33.8:5866/highgo
jdbc.classname=org.postgresql.Driver
jdbc.username=highgo
jdbc.password=highgo

配置数据源和 JdbcTemplate

假设我们有一个简单的表 users,其中包含 id 和 name 字段。

package com.highgo.config;

import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

@Configuration
@PropertySource("classpath:db.properties")
public class AppConfig {

@Value("${jdbc.url}")
private String url;

@Value("${jdbc.username}")
private String username;

@Value("${jdbc.password}")
private String password;

@Value("${jdbc.classname}")
private String classname;

//此示例 BasicDataSource 使用的是 Apache DBCP2,你也可以使用 HikariCP、Tomcat Pool 等其他连接池。
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setDriverClassName(classname);
return dataSource;
}


@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}

dao层

创建一个服务类来执行数据库操作。

package com.highgo.dao;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public class UserDao {

private final JdbcTemplate jdbcTemplate;

public UserDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

// 插入用户
public void insertUser(String name, String email) {
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(sql, name, email);
}

// 查询所有用户
public List<Map<String, Object>> getAllUsers() {
String sql = "SELECT * FROM users";
return jdbcTemplate.queryForList(sql);
}

// 根据 ID 查询用户
public Map<String, Object> getUserById(int id) {
String sql = "SELECT * FROM users WHERE id = ?";
return jdbcTemplate.queryForMap(sql, id);
}

// 更新用户信息
public void updateUser(int id, String name, String email) {
String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";
jdbcTemplate.update(sql, name, email, id);
}

// 删除用户
public void deleteUser(int id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, id);
}
}

调用

最后,你可以通过 Spring 上下文获取 UserDao Bean 并调用其方法。

package com.highgo;
import com.highgo.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.List;
import java.util.Map;

public class Main {

public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext("com.highgo");

UserDao userDao = context.getBean(UserDao.class);

// 测试插入
userDao.insertUser("Alice", "alice@example.com");
userDao.insertUser("Bob", "bob@example.com");

// 查询全部
System.out.println("All Users:");
List<Map<String, Object>> users = userDao.getAllUsers();
for (Map<String, Object> user : users) {
System.out.println(user);
}

// 查询单个
int userId = 1;
System.out.println("\nUser with ID " + userId + ":");
System.out.println(userDao.getUserById(userId));

// 更新
userDao.updateUser(userId, "Updated Alice", "updated_alice@example.com");
System.out.println("\nAfter Update:");
System.out.println(userDao.getUserById(userId));

// 删除
userDao.deleteUser(userId);
}
}

以上代码展示了如何配置 JdbcTemplate 来连接 瀚高数据库V9 数据库,并执行一个简单的查询操作。请根据实际情况修改数据库 URL、用户名和密码。