JdbcTemplate基本使用
JDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。
JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。
示例数据表
CREATE TABLE `test` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(100) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
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>yubing</groupId><artifactId>jdbc</artifactId><version>1.0-SNAPSHOT</version><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version><scope>runtime</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.12.RELEASE</version></dependency></dependencies></project>
DB封装类
import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class Db {public static JdbcTemplate getJdbcTemplate() {// 创建Properties类对象Properties properties = new Properties();try{// 读取properties属性文件到输入流中InputStream is = Db.class.getResourceAsStream("/db.properties");// 从输入流中加载属性列表properties.load(is);}catch (IOException e) {e.printStackTrace();}// 获取spring的JdbcTemplateDriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName(properties.getProperty("db.driverClass"));dataSource.setUrl(properties.getProperty("db.url"));dataSource.setUsername(properties.getProperty("db.user"));dataSource.setPassword(properties.getProperty("db.password"));return new JdbcTemplate(dataSource);}}
实现增删改查
import org.springframework.jdbc.core.JdbcTemplate;import java.util.List;import java.util.Map;public class Demo04 {public static void main(String[] args) {JdbcTemplate jdbcTemplate = Db.getJdbcTemplate();// 查询String sql = "select * from test";List<Map<String, Object>> users = jdbcTemplate.queryForList(sql);for(Map<String, Object> user:users){System.out.println(user);}// 查询为字符串String sql = "select name from test";List<String> list = jdbcTemplate.queryForList(sql,String.class);for(String str:list){System.out.println(str);}// 增加记录String sql = "insert into test set name=?";jdbcTemplate.update(sql,"dfa");//修改记录String sql = "update test set name=? where id=?";jdbcTemplate.update(sql,"fdsdf",3);}}
