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);
} }

最新文章

  1. 数据集转换为Json
  2. 纯CSS多级菜单
  3. .NET AES加解密(128位)
  4. 编写高质量代码--改善python程序的建议(八)
  5. linux知识点
  6. SQL Server 2008 R2评估期已过的解决办法
  7. jquery ajax php+mysql 无刷新分页 详细实例
  8. SVN 基本操作
  9. await, anync
  10. Codeforces 518D Ilya and Escalator
  11. svn import usage and not import .so file
  12. external 里面文件的介绍
  13. 降低Redis内存占用
  14. SV-assertion
  15. Manjaro 安装svn客户端,以及checkout使用命令
  16. Android中五大字符串总结(String、StringBuffer、StringBuilder、Spanna
  17. REST-framework快速构建API--分页
  18. python遍历数组获取下标
  19. centos添加额外测源,解决:No package openvpn available.
  20. C#连接数据库最基本操作之sql语句 DML

热门文章

  1. css——圣杯布局
  2. 3D点云深度学*
  3. 如何在CPU上优化GEMM(上)
  4. 狂神说Linux笔记:Vim和账号、用户组、磁盘管理
  5. MySQL:count()用法
  6. 三、使用sudo分配管理权限
  7. 一次SQL查询优化原理分析(900W+数据,从17s到300ms)
  8. 合宙Luat | 一文读懂LuaTask延时,看我如何从《射雕英雄传》角度分析。
  9. csp-s模拟测试55(9.29)联「线段树」&#183;赛「??」题「神仙DP」
  10. 【Javascript + Vue】实现随机生成迷宫图片