[刘阳Java]_Spring对Dao的支持_第10讲
2024-10-13 06:30:11
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);
} }
最新文章
- 数据集转换为Json
- 纯CSS多级菜单
- .NET AES加解密(128位)
- 编写高质量代码--改善python程序的建议(八)
- linux知识点
- SQL Server 2008 R2评估期已过的解决办法
- jquery ajax php+mysql 无刷新分页 详细实例
- SVN 基本操作
- await, anync
- Codeforces 518D Ilya and Escalator
- svn import usage and not import .so file
- external 里面文件的介绍
- 降低Redis内存占用
- SV-assertion
- Manjaro 安装svn客户端,以及checkout使用命令
- Android中五大字符串总结(String、StringBuffer、StringBuilder、Spanna
- REST-framework快速构建API--分页
- python遍历数组获取下标
- centos添加额外测源,解决:No package openvpn available.
- C#连接数据库最基本操作之sql语句 DML
热门文章
- css——圣杯布局
- 3D点云深度学*
- 如何在CPU上优化GEMM(上)
- 狂神说Linux笔记:Vim和账号、用户组、磁盘管理
- MySQL:count()用法
- 三、使用sudo分配管理权限
- 一次SQL查询优化原理分析(900W+数据,从17s到300ms)
- 合宙Luat | 一文读懂LuaTask延时,看我如何从《射雕英雄传》角度分析。
- csp-s模拟测试55(9.29)联「线段树」&#183;赛「??」题「神仙DP」
- 【Javascript + Vue】实现随机生成迷宫图片