六、spring之jdbcTemplate简单应用

六、spring之jdbcTemplate


一、JdbcTemplate 概述

它是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装。spring框架为我们提供了很多 的操作模板类。
1操作关系型数据的
JdbcTemplate
HibernateTemplate
> 2操作nosql数据库的:
RedisTemplate
操作消息队列的: JmsTemplate
我们今天的主角在spring-jdbc-5.0.2.RELEASE.jar 中,我们在导包的时候,除了要导入这个 jar包外,还需要导入一个spring-tx-5.0.2.RELEASE.jar(它是和事务相关的)。

二、JdbcTemplate 的简单应用

package cn.it.dao.impl;

import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import cn.it.dao.AccountDao;
import cn.it.domain.Account;
import cn.it.domain.AccountMapper;

/**
 * 账户持久层
 * JdbcDaoSupport:spring为我们封装的一个通用的dao实现类,提供了JdbcTemplate成员变量及get、set方法
 * 通过继承JdbcDaoSupport,
 * 直接使用父类定义好的jdbcTemplate成员变量,减少dao的代码冗余(通过get方法获取:getJdbcTemplate())
 * 
 */
public class AccountDaoImpl2 extends JdbcDaoSupport implements AccountDao {


    /**
     * 一、增删改(例:修改账户)
     * update:增删改的方法
     * jdbcTemplate.update(sql, args)
     * 1参数1:sql语句
     * 2参数2:参数列表
     * 
     * 
     */
    @Override
    public int updateAccount(Account account) {
        int row = getJdbcTemplate().update("update account set money = ? where name=?", account.getMoney(),
                account.getName());

        return row;
    }

    /**
     * 二、结果集为list的查询(查询所有账户))
     * 1.query:查询结果为list集合
     *  jdbcTemplate.query(sql, rowMapper, args)
     * 2参数1:sql语句
     * 3参数2:查询封装结果集对象,实现了RowMapper接口的自定义实现类
     * 4参数3:参数列表
     */
    public List<Account> findAll() {
        List<Account> alist = getJdbcTemplate().query("select * from account ", new AccountMapper());

        return alist;
    }

    /**
     * 三、单结果集查询(通过名字查找账户) 
     * 1.queryForObject:查询结果为一个对象 
     * jdbcTemplate.queryForObject(sql, rowMapper, args)
     * 2.参数1:sql语句 
     * 3.参数2:RowMapper 查询结果集
     * 4.参数3:args 参数列表
     */
    @Override
    public Account findAccountByName(String name) {
        Account account = getJdbcTemplate().queryForObject("select * from account where name =? ", new AccountMapper(),
                name);
        return account;
    }

    /**
     * 四、结果集一行一列的查询(查询表中账户数量)
     * 1.queryForObject:查询结果为一行一列 
     * jdbcTemplate.queryForObject(sql, requiredType, args)
     * 2参数1:sql语句
     * 3参数2:查询结果的字节码(一般为基本类型,long,int,String等)
     * 4参数3:参数列表
     */
    public Long findCount() {

        Long row = getJdbcTemplate().queryForObject("select Count(*) from account ", Long.class);
        return row;
    }


}
   /**
     * 在不继承JdbcDaoSupport的情况下,我们每个dao实现类都需要定义一个JdbcTemplate成员变量,
     * 并提供set方法,来供CURD的方法使用。 
     * */
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

配置文件(这里我们采用spring内置的连接池)

    <!-- 创建Dao交给spring管理 -->
    <bean id="accountDao" class="cn.it.dao.impl.AccountDaoImpl2">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>
    <!-- 配置jdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 注入基本元素,配置spring内置连接池对象 -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!-- 基本元素赋值 -->
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql:///springdb"></property>
    </bean>

我们也可以配置c3p0连接池

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="root"></property>
        <property name="password" value="111111"></property>
        <property name="jdbcUrl" value="jdbc:mysql:///springdb"></property>
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
     </bean>

当然也可以使用dbcp

    <!-- 注入基本元素,配置dbcp连接池对象 -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!-- 基本元素赋值 -->
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql:///springdb"></property>
    </bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值