1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单
2. 提供了JDBC模板,Spring框架提供的
    * JdbcTemplate类
3. Spring框架可以整合Hibernate框架,也提供了模板类
    * HibernateTemplate类快速入门
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包(4个核心+2个日志)
    * 再引入Spring-aop的jar包(1个AOP)
    * 最后引入JDBC模板需要的jar包
        * MySQL数据库的驱动包
        * Spring-jdbc.jar
        * Spring-tx.jar
3. 在配置文件中配置连接池和模板类,并扫描包
<!-- 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="toor"/>
    </bean>
    <!-- 模板类 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 扫包中的注释 -->
    <context:component-scan base-package="com.spring.demo1" />

4.测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value="classpath:applicationContext.xml")
public class Demo1 {

    //模板类
    @Resource(name="jdbcTemplate")
    private JdbcTemplate jdbcTemplate;

    /**
     * 插入操作
     */
    @Test
    public void m01(){
        jdbcTemplate.update("insert into t_account values (null,?,?)","测试3",10000);
    }
}

连接池的选择

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
    <!-- DBCP连接池 -->
    <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="toor"/>
    </bean> 

2.C3P0连接池

先引入C3P0的jar包
        * com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
    <!-- C3P0连接池 -->
    <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="toor"/>
    </bean>

JDBC模板类的简单操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value="classpath:applicationContext.xml")
public class Demo1 {

    //模板类
    @Resource(name="jdbcTemplate")
    private JdbcTemplate jdbcTemplate;

    /**
     * 插入操作
     */
    @Test
    public void m01(){
        jdbcTemplate.update("insert into t_account values (null,?,?)","测试3",10000);
    }

    /**
     * 更新操作
     */
    @Test
    public void m02(){
        jdbcTemplate.update("update t_account set name = ? where id = ?","测试3修改过10",4);
    }

    /**
     * 删除操作
     */
    @Test
    public void m03(){
        jdbcTemplate.update("delete from t_account where id=?",3);
    }

    /**
     * 查询一条记录
     */
    @Test
    public void m04(){
        Account account = jdbcTemplate.queryForObject("select * from t_account where id=?", new BeanMapper(), 1);
        System.out.println(account);
    }

    /**
     * 查询多条记录
     */
    @Test
    public void m05(){
        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;
    }
}

9.SpringJDBC模板类的更多相关文章

  1. 使用Spring框架来管理模板类

    1. 刚才编写的代码使用的是new的方式,应该把这些类交给Spring框架来管理. 2. 修改的步骤如下 applicationContext.xml中<beans>标签的开头配置为: * ...

  2. Spring框架之演示JDBC的模板类

    1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int prim ...

  3. Spring-JDBC模板-事务

    Spring-JDBC模板-事务 1.事务概述 什么是事务 逻辑上的一组操作,组成这组操作的各个单元要么全部成功要么全部失败 事务的特点ACID 原子性:事务不可分割(事务要么成功,要么失败) 一致性 ...

  4. Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate(转)

    今天看了下Spring的源码——关于JDBC的"薄"封装,Spring 用一个Spring JDBC模板类来封装了繁琐的JDBC操作.下面仔细讲解一下Spring JDBC框架. ...

  5. 解析Spring第四天(Spring中的事物、Spring框架来管理模板类)

    JDBC模板技术: Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 template 模板 都是Spring框架提供XxxTemplate 提供了JDBC模板,Sp ...

  6. 关于Spring-JDBC测试类的简单封装

    关于Spring-JDBC测试类的简单封装 1.简单封装 /** * Created with IntelliJ IDEA. * * @Author: Suhai * @Date: 2022/04/0 ...

  7. 单链表的C++实现(采用模板类)

    采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作.  链表结构定义 定义单链表 ...

  8. 模板类 error LNK2019: 无法解析的外部符号

    如果将类模板的声明和实现写在两个独立的文件中,在构建时会出现"error LNK2019: 无法解析的外部符号 "的错误. 解决方法有: 第一种方法,就是把类模板中成员函数的声明和 ...

  9. 关于g++编译模板类的问题

    今天搞了我接近4个小时,代码没错,就是调试没有通过,无论怎么也没有想到是编译器的问题 g++不支持c++模板类 声明与实现分离,都要写到.h文件里面. 以后记住了.

随机推荐

  1. NX二次开发-UFUN设置除工作层之外的所有图层的状态UF_LAYER_set_all_but_work

    NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_layer.h> UF_initialize ...

  2. JVM常用命令行工具1

    1.jps [options][hostid]:查看虚拟机进程状况 -l 输出主类全名,如果进程执行的是jar包,输出jar包路径.-q 只输出LVMID. -m输出虚拟机进程启动时传递给主类main ...

  3. 5、 postman的鉴权

    什么是鉴权? 鉴权(authentication)是指验证用户是否拥有访问系统的权利.常用的有两种鉴权方式,一种是session鉴权,一种是jwt鉴权,相对而言,后者居多. 实例: 比如有一个添加角色 ...

  4. Day 12 :迭代器与生成器

    可迭代:在Python中如果一个对象有__iter__( )方法,则称这个对象是可迭代的(Iterable): 其中__iter__( )方法的作用是让对象可以用for ... in循环遍历,列表Li ...

  5. SpringMVC(AbstractController,拦截器,注解)

    1.Controller接口及其实现类 Controller是控制器/处理器接口,只有一个方法handleRequest,用于进行请求的功能处理(功能处理方法),处理完请求后返回ModelAndVie ...

  6. Spring MVC @RequestMapping注解详解(2)

    @RequestMapping 参数说明 value:定义处理方法的请求的 URL 地址.(重点) method:定义处理方法的 http method 类型,如 GET.POST 等.(重点) pa ...

  7. iOS开发系列-修改项目工程名

    当前有项目工程名为iOS,需要修改工程名为IFLY.在修改前注意备份项目 修改项目名 出现弹框,点击Rename 修改工程目录文件名 注意Tests与UITests不要删除 选中IFLY.xcodep ...

  8. Python编程从入门到实践

    Python编程从入门到实践1 起步2 变量和简单数据类型3 列表简介4 操作列表5 if语句6 字典7 用户输入和while循环8 函数9 类10 文件和异常11 测试代码12 武装飞船13 外星人 ...

  9. 关于pip安装较慢的问题解决

    在 ~/.pip/ 下创建文件 pip.conf(如果还没有的话),并填入以下内容: [global] timeout = 6000 index-url = http://pypi.douban.co ...

  10. 【学术篇】SDOI2008 仪仗队

    Part1:传送门&吐槽 水题... 然而由于线筛里面的\(j\)打成了\(i\)然后就不能1A了OvO Part2:题目分析 这个正方形是对称的... 而且很显然对角线上只有一个点会被看到. ...