简介 **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 > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-context</artifactId > <version > 5.3.30</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-jdbc</artifactId > <version > 5.3.30</version > </dependency > <dependency > <groupId > commons-dbcp</groupId > <artifactId > commons-dbcp</artifactId > <version > 1.4</version > </dependency > <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; @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); } 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、用户名和密码。