@(Spring)[spring jdbc]
Spring JDBC开发Spring的JDBC模板的概述什么是JDBC的模板Spring的JDBC模板入门创建web项目引入jar包创建表编写测试Spring管理连接池和模板Spring管理内置连接池Spring管理Spring JDBC模板Spring管理DBCP连接池Spring管理C3P0连接池将连接数据库信息提取到属性文件中Spring的JDBC的模板的API完成CRUD插入更新删除的方法查询的方法案例
Spring是一站式框架有EE开发的每一层的解决方案,像持久层Spring提供了JDBC的模板和ORM模块用于整合其他的持久层框架。
JDBC的模板是Spring提供的用于简化JDBC开发的一个技术。类似于DBUtils。 PS:在Spring4中已经移除对IBatis的支持,如果需要使用,请使用3版本的orm包
在Spring的配置文件中引入外部属性文件
通过<context>
标签引入 <!-- 引入外部属性文件 --> <context:property-placeholder location="classpath:db.properties"/>
通过<bean>
标签引入 <!-- 引入外部属性文件 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:db.properties"/> </bean>
使用属性文件中的key配置连接池
<!-- spring配置c3p0连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClass}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /></bean>int update(String sql,Object… args);
package com.pc;import javax.annotation.Resource;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/** * JDBC测试 * * @author Switch * @data 2016年11月25日 * @version V1.0 */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")public class JDBCTest { @Resource(name = "jdbcTemplate") private JdbcTemplate jdbcTemplate; @Test // insert语句 public void insert() { jdbcTemplate.update("insert into account(id, name, money) values(?,?,?)", null, "Kity", 10000d); } @Test // update语句 public void update() { jdbcTemplate.update("update account set name = ?, money = ? where id = ?", "Tom", 20000d, 2); } @Test // delete语句 public void delete() { jdbcTemplate.update("delete from account where id = ?", 2); }}T queryForObject(String sql,Class<T> c,Object… args);
T queryForObject(String sql,RowMapper<T> rowMapper,Object… args);
List<T> query(String sql,RowMapper rowMapper,Object… args);
package com.pc;import java.util.List;import javax.annotation.Resource;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/** * JDBC测试 * * @author Switch * @data 2016年11月25日 * @version V1.0 */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")public class JDBCTest { @Resource(name = "jdbcTemplate") private JdbcTemplate jdbcTemplate; @Test // 查询单行单列 public void queryForObject1() { String name = jdbcTemplate.queryForObject("select name from account where id = ?", String.class, 1); System.out.println(name); } @Test // 查询一行,封装到对应的对象 public void queryForObject2() { Account account = jdbcTemplate.queryForObject("select * from account where id = ?", new AccountRowMapper(), 1); System.out.println(account); } @Test // 查询多行,封装到对应对象集合中 public void queryForList1() { List<Account> accounts = jdbcTemplate.query("select * from account", new AccountRowMapper()); System.out.println(accounts); }}package com.pc;import java.sql.ResultSet;import java.sql.SQLException;import org.springframework.jdbc.core.RowMapper;/** * 账号类行映射 * * @author Switch * @data 2016年11月25日 * @version V1.0 */public class AccountRowMapper implements RowMapper<Account> { @Override public Account mapRow(ResultSet rs, int rowNum) throws SQLException { Account account = new Account(); account.setId(rs.getInt("id")); account.setName(rs.getString("name")); account.setMoney(rs.getDouble("money")); return account; }}GitHub:SpringDataTest
新闻热点
疑难解答