前一篇通过对传统的JDBC的使用操作,可以体会到使用的繁琐与复杂,套句话说,是用了20%作了真正的工作,80%作了重复的工作。

那么通过本篇,可以了解如下的内容:

1 如何配置数据源

2 如何在spring中使用模板

3 如何建立数据源的统一的基类

  首先看一下如何配置数据源

  我们可以使用3种方式配置数据源:

  1 JNDI配置数据源

  这种做法我是没用过,感觉每次都要去修改配置Tomcat之类的web容器,很是麻烦。

  2 使用DBCP数据源连接池

  一般情况下都是采用这种方式,对于连接池的实现,也有很多种,比如DBCP,c3p0等等。

  用户可以针对连接池进行自己的配置,有助于数据库端的调优。

  如果想对数据源连接池多谢了解,可以猛戳该链接

  相对来说,最常使用的就是dbcp和c3p0了。

  3 基于JDBC的驱动的数据源

  这种是最基本的通过驱动程序管理数据源,但是没有连接池的概念。

  有两种实现方式:

  DriverManagerDataSource:一般都是使用这种,这种方式每次请求都会返回一个新的连接。

  SingleConnectionDataSource:这种每次都是使用的一个连接。

  

  本篇为了简单方便,就直接使用的第三种。

  

  Spring中的模板以及提供的基类

  在Spring中为我们提供了三种模板:

  1 JdbcTemplate

  提供最简单的数据访问等功能。

  2 NamedParameterJdbcTemplate

  通过该模板,可以把参数作为查询的条件传入方法中。

  3 SimpleJdbcTemplate(一般都是使用这种)

  结合了一些自动装箱等功能,3.0以后,整合了NamedParameterJdbcTemplate。

  

  为了避免每次都要把jdbctemplate的bean注入到我们的DAO里面,Spring为我们实现了三种对应的基类,我们的DAO实现类需要继承这些基类,就可以直接使用模板了。

  对应的分别是:JdbcDapSupport、SimpleJdbcDaoSupport、NamedParameterJdbcDaoSupport

  

  最后就是程序的使用介绍了

  首先看一下配置数据源的bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<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="123qwe"/>
</bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean> <bean id="newjdbcdao" class="com.spring.chap5.dao.NewJdbcImpl" >
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
</beans>

  这里,我们配置了dataSource,以及jdbcTemplate,最后把jdbcTemplate注入到dao的实现类里面。

  接下来的DAO的接口:

public interface NewJdbc {
public void insertPerson(String id,String name,int age);
public void findPersonById(String id);
}

  DAO的实现类:

public class NewJdbcImpl implements NewJdbc{
private SimpleJdbcTemplate jdbcTemplate; public void setJdbcTemplate(SimpleJdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} public void insertPerson(String id,String name,int age){
jdbcTemplate.update("insert into persons (id,name,age) values (?,?,?)", id,name,age);
} public void findPersonById(String id){
Person person = jdbcTemplate.queryForObject("select * from persons where id = ?",
new ParameterizedSingleColumnRowMapper<Person>(){
public Person mapRow(ResultSet rs,int rowNum) throws SQLException{
Person p = new Person();
p.setId(rs.getString(1));
p.setName(rs.getString(2));
p.setAge(rs.getInt(3));
return p;
}
}
, id);
System.out.println("id:"+person.getId()+" name:"+person.getName()+" age:"+person.getAge());
}
}

  最后是测试使用的类

public class test {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
NewJdbc newjdbc = (NewJdbc)ctx.getBean("newjdbcdao");
newjdbc.insertPerson("003", "xingoo3", 25);
newjdbc.findPersonById("003");
}
}

  以上便是Spring基于JDBC的模板使用了。

  可以看到,相对于前面的传统的JDBC操作数据库来说,省略了创建连接以及释放的过程。

  仅仅是把操作的真正的实现部分交给开发人员,这就是模板的设计模式的应用——分离模板与开发人员的实现。

【Spring实战】—— 15 Spring JDBC模板使用的更多相关文章

  1. 【Spring实战】Spring容器初始化完成后执行初始化数据方法

    一.背景知识及需求 在做WEB项目时,经常在项目第一次启动时利用WEB容器的监听.Servlet加载初始化等切入点为数据库准备数据,这些初始化数据是系统开始运行前必须的数据,例如权限组.系统选项.默认 ...

  2. 【Spring实战】Spring注解配置工作原理源码解析

    一.背景知识 在[Spring实战]Spring容器初始化完成后执行初始化数据方法一文中说要分析其实现原理,于是就从源码中寻找答案,看源码容易跑偏,因此应当有个主线,或者带着问题.目标去看,这样才能最 ...

  3. 【转】【Spring实战】Spring注解配置工作原理源码解析

    一.背景知识 在[Spring实战]Spring容器初始化完成后执行初始化数据方法一文中说要分析其实现原理,于是就从源码中寻找答案,看源码容易跑偏,因此应当有个主线,或者带着问题.目标去看,这样才能最 ...

  4. (一)《Spring实战》——Spring核心

    <Spring实战>(第4版) 第一章:Spring之旅 1. 简化Java开发 为了降低Java开发的复杂性,Spring采取了以下4种关键策略: 基于POJO的轻量级和最小侵入性编程: ...

  5. (二)《Spring实战》——Spring核心

    第二章:装配Bean 在Spring中,对象无需自己查找或创建与其所关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.例如,一个订单管理组件需要信用卡认证组件,但它不需要自己创建信用 ...

  6. Spring入门(三)— AOP注解、jdbc模板、事务

    一.AOP注解开发 导入jar包 aop联盟包. aspectJ实现包 . spring-aop-xxx.jar . spring-aspect-xxx.jar 导入约束 aop约束 托管扩展类和被扩 ...

  7. Spring 框架的JDBC模板技术

    1. 概述 Spring 框架提供了很多持久层的模板类来简化编程; Spring 框架提供的JDBC模板类: JdbcTemplate 类; Spring 框架提供的整合 Hibernate 框架的模 ...

  8. Spring 框架系列之 JDBC 整合实例

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Spring框架整合 DAO 模板 JDBC:org.springframework.jdb ...

  9. 【Spring实战】----开篇(包含系列目录链接)

    [Spring实战]----开篇(包含系列目录链接) 置顶2016年11月10日 11:12:56 阅读数:3617 终于还是要对Spring进行解剖,接下来Spring实战篇系列会以应用了Sprin ...

  10. Spring实战6:利用Spring和JDBC访问数据库

    主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRep ...

随机推荐

  1. BZOJ 5421: 收藏家

    传送门 直接搞很复杂,考虑转化问题 题目只要求第1个人最多能获得的物品数量 所以如果一种物品拥有多个和一个是没区别的 那么考虑每种物品对第1个人怎样贡献 显然要经过一些交换最终到达第一个人那里 发现很 ...

  2. highcharts去掉x轴,y轴,轴线以及刻度

    var chart = null; $.getJSON('https://data.jianshukeji.com/jsonp?filename=json/usdeur.json&callba ...

  3. [转] Kubernetes集群安装文档-v1.6版本

    [From] https://www.kubernetes.org.cn/1870.html http://jimmysong.io/kubernetes-handbook

  4. Tomcat SSL证书安装配置

    [From Internet] 首先找到安装Tomcat 目录下该文件“Server.xml”,一般默认路径都是在Conf 文件夹中.然后用文本编辑器打开该文件,接着找到 <Connector ...

  5. 获得Windows系统的远程桌面连接历史记录

    转载:http://www.mottoin.com/tech/109219.html 渗透技巧—获得Windows系统的远程桌面连接历史记录 0x00 前言 在渗透测试中,远程桌面连接的历史记录不可忽 ...

  6. 《The Python Tutorial》——Errors and Exceptions 阅读笔记

    Errors and Exceptions 官方文档:https://docs.python.org/3.5/tutorial/errors.html python中所有的异常都继承自BaseExce ...

  7. Kibana修改Time日志格式

    选择左侧management 打开Advanced Settings 编辑:dateFormat,默认格式是:MMMM Do YYYY, HH:mm:ss.SSS,修改为:YYYY-MM-DD HH: ...

  8. 基于setTimeout制作滚动广告板

    很多网站在其门户页面的上方正中央都会放置一个滚动广告板,用于显示一些推荐信息,用户点击即可进入浏览.比较常见的就是各个公司的官网,电商网站的首页等. 下面是天猫的滚动广告板截图. 其实,不需要借助于什 ...

  9. 8086键盘输入实验——《x86汇编语言:从实模式到保护模式》读书笔记07

    1.BIOS中断 我们可以为所有中断类型自定义中断处理过程,包括内部中断.硬件中断和软中断. BIOS中断,又称BIOS功能调用,主要是为了方便地使用最基本的硬件访问功能.通常,为了区分针对同一硬件的 ...

  10. VS2008调试程序时出现"XXX mutex not created."

    1. 在 VS2008中调试一个程序,怎样都运行不起来(在IDE中无法运行) 出现恶心信息: 2. 但神奇的是,在工程目录下,直接双击exe文件 却可以启动起来,说明编译的文件没问题,有可能是IDE的 ...