JdbcTemplate基本使用

JDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。
JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。

示例数据表

  1. CREATE TABLE `test` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(100) DEFAULT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

pom.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>yubing</groupId>
  7. <artifactId>jdbc</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <build>
  10. <plugins>
  11. <plugin>
  12. <groupId>org.apache.maven.plugins</groupId>
  13. <artifactId>maven-compiler-plugin</artifactId>
  14. <configuration>
  15. <source>8</source>
  16. <target>8</target>
  17. </configuration>
  18. </plugin>
  19. </plugins>
  20. </build>
  21. <dependencies>
  22. <dependency>
  23. <groupId>mysql</groupId>
  24. <artifactId>mysql-connector-java</artifactId>
  25. <version>5.1.47</version>
  26. <scope>runtime</scope>
  27. </dependency>
  28. <dependency>
  29. <groupId>junit</groupId>
  30. <artifactId>junit</artifactId>
  31. <version>4.12</version>
  32. <scope>test</scope>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework</groupId>
  36. <artifactId>spring-jdbc</artifactId>
  37. <version>5.2.12.RELEASE</version>
  38. </dependency>
  39. </dependencies>
  40. </project>

DB封装类

  1. import org.springframework.jdbc.core.JdbcTemplate;
  2. import org.springframework.jdbc.datasource.DriverManagerDataSource;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.Properties;
  6. public class Db {
  7. public static JdbcTemplate getJdbcTemplate() {
  8. // 创建Properties类对象
  9. Properties properties = new Properties();
  10. try
  11. {
  12. // 读取properties属性文件到输入流中
  13. InputStream is = Db.class.getResourceAsStream("/db.properties");
  14. // 从输入流中加载属性列表
  15. properties.load(is);
  16. }
  17. catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. // 获取spring的JdbcTemplate
  21. DriverManagerDataSource dataSource = new DriverManagerDataSource();
  22. dataSource.setDriverClassName(properties.getProperty("db.driverClass"));
  23. dataSource.setUrl(properties.getProperty("db.url"));
  24. dataSource.setUsername(properties.getProperty("db.user"));
  25. dataSource.setPassword(properties.getProperty("db.password"));
  26. return new JdbcTemplate(dataSource);
  27. }
  28. }

实现增删改查

  1. import org.springframework.jdbc.core.JdbcTemplate;
  2. import java.util.List;
  3. import java.util.Map;
  4. public class Demo04 {
  5. public static void main(String[] args) {
  6. JdbcTemplate jdbcTemplate = Db.getJdbcTemplate();
  7. // 查询
  8. String sql = "select * from test";
  9. List<Map<String, Object>> users = jdbcTemplate.queryForList(sql);
  10. for(Map<String, Object> user:users){
  11. System.out.println(user);
  12. }
  13. // 查询为字符串
  14. String sql = "select name from test";
  15. List<String> list = jdbcTemplate.queryForList(sql,String.class);
  16. for(String str:list){
  17. System.out.println(str);
  18. }
  19. // 增加记录
  20. String sql = "insert into test set name=?";
  21. jdbcTemplate.update(sql,"dfa");
  22. //修改记录
  23. String sql = "update test set name=? where id=?";
  24. jdbcTemplate.update(sql,"fdsdf",3);
  25. }
  26. }