Spring框架优秀就是在于MVC开发的时候一旦需要对底层的数据库操作,它可以很好的支持JDBC技术,还有现在主流的ORM框架(Hibernate, MyBatis)技术。

重点先介绍Spring对JDBC支持。在Spring对JDBC支持中提供了一个模板JdbcTemplate此模板封装了对JDBC操作的许多方法且消除了忽视资源释放而引起的漏洞

1. Spring对JDBC操作需要导入的jar(开发环境配置)

  • common-dbcp.jar:提供数据源的第三方包
  • common-pool.jar: common-dbcp.jar的依赖包
  • spring-jdbc-4.0.3.jar:完成jdbc操作
  • spring-tx-4.0.3.jar:jdbc事务异常相关类
  • msyql-connector.jar:mysql的驱动包

2. 我们来看一个应用Spring JDBC的程序编写步骤

  • 配置数据源,数据源的配置Spring依赖于第三方两个数据源实现包:Apache-DBCP和C3P0
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/sampledb"
p:username="root"
p:password="1234" />

注意事项:BasicDataSource提供了close方法来关闭数据源,所以我们可以利用destory-method属性来执行关闭操作

  • DBCP参数说明

    • initialSize:初始化连接,即连接池启动时候创建的初始化连接数量。默认为0
    • maxActive:最大活动连接,即连接池在同一时间能够分配的最大活动连接的数量,如果设置为负数则表示不限制。默认为8
    • maxIdle:最大空闲连接,即连接池允许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制。默认为8
    • minIdle:最小空闲连接,即连接池允许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建。默认为0
    • maxWait:最大等待时间,即当没有可用连接时,连接池等待连接被归还的最大时间(单位:以毫秒计数),超过时间则抛异常。如果设置为-1表示无限制。默认为-1
  • 结合属性文件进行数据源的配置
    • 先创建jdbc.properites文件
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:XE
jdbc.username=team3
jdbc.password=team3
    • 在Spring的配置文件中可以编写如下的代码
<context:property-placeholder location="classpath:jdbc.properties">

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
  • JdbcTemplate模板应用,一般情况,我们在Dao类中使用JdbcTemplate,JdbcTemplate在XML配置文件配置好后,然后直接在Dao中注入
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource"></bean>
  • Dao层代码实现
package com.gxaedu.dao;

import java.util.List;
import java.util.Map; import org.springframework.jdbc.core.JdbcTemplate; @Repository //声明一个Dao
public class UsersDao { @Autowire //注入jdbcTemplate
JdbcTemplate template; public void query() { //用户的查询
String sql = "select * from users";
List<Map> list = template.queryForList(sql);
System.out.println("list = " + list);
} public Map query(String username, String userpwd) {
//获取用户信息的操作还是使用Spring的JDBC
String sql = "select * from users where user_name= ?anduser_pwd = ?";
Object[] obj = {username, userpwd};
return template.queryForMap(sql, obj);
} }

[刘阳Java]_Spring对Dao的支持_第10讲的更多相关文章

  1. [刘阳Java]_Spring AOP注解详细介绍_第8讲

    这节内容非常关键,我们会比较详细地介绍Spring AOP注解的使用 1. 要使用Spring AOP注解,必须满足如下的事项 导入Aspectj的jar.Spring3.0-AOP.jar.aopa ...

  2. [刘阳Java]_MyBatis_动态SQL标签用法_第7讲

    1.MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. 2.MyBatis中用于实现动态SQL的元素主要有 if choose(when,otherwi ...

  3. [刘阳Java]_MyBatis_常规标签的用法_第6讲

    一般MyBatis最基本标签,或者说初学者上手最快的标签就是增删改查 1.<insert>标签,在MyBatis中完成数据添加操作 <insert id="addMyUse ...

  4. [刘阳Java]_SpringMVC与Struts2的对比_第12讲

    今日来具体给讲讲SpringMVC与Struts2的对比,这样方便朋友们在工作中或者是面试学习中对这两者的区别有个更好的了解 把这张图放在这里,我是想说SpringMVC和Struts2真的是不一样的 ...

  5. [刘阳Java]_Spring AOP入门_第7讲

    AOP技术个人认为是能够完善(改善)面向对象编程OOP.为什么这么说,我们得先从AOP的概念说起,然后通过一段简单的例子加以佐证.这样子大家就可以慢慢地了解AOP 1. AOP概念 AOP为Aspec ...

  6. [刘阳Java]_Spring常用注解介绍_第6讲

    Spring的注解是在Spring2.5的版本中引入的,目的简化XML配置.在企业开发过程中使用注解的频率非常高,但是学习注解的前提是大家一定要对Spring基于XML配置要熟悉,这是我个人建议,因为 ...

  7. [刘阳Java]_Spring入门_第1讲

    Spring框架在企业中的使用非常多,优势明显.所以学好Spring框架肯定不言而喻.今天我们给大家介绍Spring的入门 1. 对于初学者来说我们要学习Spring框架中的哪些技术,这个有必要了解一 ...

  8. [刘阳Java]_Spring AOP基于XML配置介绍_第9讲

    基于注解配置的Spring AOP固然简单,但是这节我们会给大家介绍基于XML配置的AOP是如何应用的.为什么这么说了,因为后面我们还会介绍到Spring对Dao操作的事务管理(基于AOP的XML文件 ...

  9. [刘阳Java]_Spring IOC程序代码如何编写_第3讲

    第2讲我们介绍了Spring IOC的基本原理,这篇文章告诉大家Spring IOC程序代码是如何编写的,从而可以更好的理解IOC和DI的概念(所有的Java类的初始化工作扔给Spring框架,一个J ...

随机推荐

  1. TensorFlow文本情感分析实现

    TensorFlow文本情感分析实现 前面介绍了如何将卷积网络应用于图像.本文将把相似的想法应用于文本. 文本和图像有什么共同之处?乍一看很少.但是,如果将句子或文档表示为矩阵,则该矩阵与其中每个单元 ...

  2. 如何为应用选择最佳的FPGA(上)

    如何为应用选择最佳的FPGA(上) How To Select The Best FPGA For Your Application 在项目规划阶段,为任何一个项目选择一个FPGA部件是最关键的决策之 ...

  3. mybatis入门案例——IDEA版

    环境:IDEA2017,jdk1.8.0,maven3.5.2 步骤: 1.创建一个普通Maven工程,删掉src目录,再创建一个maveb的model命名为mybatis-01 2.配置 pom.x ...

  4. 【NX二次开发】NX对象类型及基本操作

    说明:NX中的所有对象都是通过唯一的tag_t值进行标识的,这些对象大致可以分为部件对象.UF对象.表达式.链表对象和属性对象等. 部件对象的操作: 基本操作函数: 1. UF_PART_new()  ...

  5. Typora 配置码云图床

    目录 在码云创建一个项目作为自己床图 设置私人令牌 下载安装 PigGo Typora中设置图片上传选项 在码云创建一个项目作为自己床图 创建的项目必须为公开项目,创建的过程不细说了. 设置私人令牌 ...

  6. 信息熵,交叉熵与KL散度

    一.信息熵 若一个离散随机变量 \(X\) 的可能取值为 \(X = \{ x_{1}, x_{2},...,x_{n}\}\),且对应的概率为: \[p(x_{i}) = p(X=x_{i}) \] ...

  7. Vue(10)表单输入绑定v-model

    v-model v-model指定可以实现表单值与属性的双向绑定.即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值 绑定的属性和事件 v-model在内部为不同的输入元 ...

  8. Pytest学习笔记9-失败重跑

    前言 在进行自动化测试的过程中,我们一定会有这样的需求:希望失败的用例可以自动重跑 在pytest中,提供了pytest-rerunfailures插件可以实现自动重跑的效果 插件安装 pip命令安装 ...

  9. 三剑客-sed

    1.sed命令概述说明: 字符流编辑工具(行编辑工具) 2.sed命令作用说明: (1)擅长对行进行操作处理 (2)擅长将文件的信息进行修改调整/删除 3.sed具体功能 (1)文件中添加信息的能力( ...

  10. 14.5、redis-sentinel高可用

    1.redis主从同步配置: (0)主机配置: 服务器名称 ip地址 实例6379 实例6380 实例6381 controller-node1 172.16.1.90 主 从 从 (1)确定主从: ...