Spring框架的JDBC模板使用

1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单

2. 提供了JDBC模板,Spring框架提供的

* JdbcTemplate类

3. Spring框架可以整合Hibernate框架,也提供了模板类

* HibernateTemplate类

 

**技术分析之演示JDBC的模板类**

1. 步骤一:创建数据库的表结构

create database spring_day03;

use spring_day03;

create table t_account(

id int primary key auto_increment,

name varchar(20),

money double

);

 

2. 引入开发的jar包

* 先引入IOC基本的6个jar包

* 再引入Spring-aop的jar包

* 最后引入JDBC模板需要的jar包

* MySQL数据库的驱动包

* Spring-jdbc.jar

* Spring-tx.jar

 

3. 编写测试代码(自己来new对象的方式)

@Test

public void run1(){

// 创建连接池,先使用Spring框架内置的连接池

DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql:///spring_day03");

dataSource.setUsername("root");

dataSource.setPassword("root");

// 创建模板类

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

// 完成数据的添加

jdbcTemplate.update("insert into t_account values (null,?,?)", "测试",10000);

}

 

**技术分析之使用Spring框架来管理模板类**

1. 刚才编写的代码使用的是new的方式,应该把这些类交给Spring框架来管理。

2. 修改的步骤如下

* 步骤一:Spring管理内置的连接池

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

            <property name="url" value="jdbc:mysql:///spring_day03"/>

            <property name="username" value="root"/>

            <property name="password" value="root"/>

    </bean>

 

* 步骤二:Spring中的jdbc模板类

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

            <property name="dataSource" ref="dataSource"/>

    </bean>

 

* 步骤三:编写测试程序

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath:applicationContext.xml")

public class Demo2 {

 

@Resource(name="jdbcTemplate")

private JdbcTemplate jdbcTemplate;

 

@Test

public void run2(){

jdbcTemplate.update("insert into t_account values (null,?,?)", "测试2",10000);

}

}

**技术分析之Spring框架管理开源的连接池**

1. 管理DBCP连接池

* 先引入DBCP的2个jar包

* com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar

* com.springsource.org.apache.commons.pool-1.5.3.jar

 

* 编写配置文件

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

            <property name="url" value="jdbc:mysql:///spring_day03"/>

            <property name="username" value="root"/>

            <property name="password" value="root"/>

    </bean>

 

2. 管理C3P0连接池

* 先引入C3P0的jar包

* com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

* 编写配置文件

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

            <property name="driverClass" value="com.mysql.jdbc.Driver"/>

            <property name="jdbcUrl" value="jdbc:mysql:///spring_day03"/>

            <property name="user" value="root"/>

            <property name="password" value="root"/>

    </bean>

 

**技术分析之Spring框架的JDBC模板的简单操作**

1. 增删改查的操作

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath:applicationContext.xml")

public class SpringDemo3 {

@Resource(name="jdbcTemplate")

private JdbcTemplate jdbcTemplate;

@Test

// 插入操作

public void demo1(){

jdbcTemplate.update("insert into account values (null,?,?)", "冠希",10000d);

}

@Test

// 修改操作

public void demo2(){

jdbcTemplate.update("update account set name=?,money =? where id = ?", "思雨",10000d,5);

}

@Test

// 删除操作

public void demo3(){

jdbcTemplate.update("delete from account where id = ?", 5);

}

@Test

// 查询一条记录,返回封装数据的对象

public void demo4(){

Account account = jdbcTemplate.queryForObject("select * from account where id = ?", new BeanMapper(), 1);

System.out.println(account);

}

@Test

// 查询所有记录,返回对象集合

public void demo5(){

List<Account> list = jdbcTemplate.query("select * from t_account", new BeanMapper());

for (Account account : list) {

System.out.println(account);

}

}

}

/**

*自定义数据封装的对象,即查询到数据封装到某个对象或对象的集合中

*无论返回的是一个对象和对象的集合都是写法都是一样的

*/

class BeanMapper implements RowMapper<Account>{

public Account mapRow(ResultSet rs, int arg1) throws SQLException {

Account account = new Account();

account.setId(rs.getInt("id"));

account.setName(rs.getString("name"));

account.setMoney(rs.getDouble("money"));

return account;

}

}

 

**继承JdbcDaoSupport类简化Dao层的开发**

 在业务层注入DAO ,在DAO中注入JDBC模板(可以直接获取jdbcTemplate对象)

<bean id="accountService" class="com.huge.demo1.AccountServiceImpl">

<property name="accountDao" ref="accountDao"/>

</bean>

<bean id="accountDao" class="com.huge.demo1.AccountDaoImpl">

<property name="dataSource" ref="dataSource"/>

</bean>

Dao中注入dataSource代替JdbcTemplate对象的原因如下图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值