@(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中配置DBCP的連接池<!-- Spring配置dbcp連接池 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">    <property name="driverClassName" value="com.mysql.jdbc.Driver" />    <property name="url" value="jdbc:mysql://localhost:3306/test" />    <property name="username" value="root" />    <property name="password" value="123456" /></bean>
在Spring中配置C3P0連接池<!-- spring配置c3p0連接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">    <property name="driverClass" value="com.mysql.jdbc.Driver" />    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test" />    <property name="user" value="root" />    <property name="password" value="123456" /></bean>在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
新聞熱點
疑難解答