第10讲_Spring对Dao的支持

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的驱动包
  1. 我们来看一个应用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文件
<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);
    }

}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,850评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,122评论 6 342
  • 这些属性是否生效取决于对应的组件是否声明为 Spring 应用程序上下文里的 Bean(基本是自动配置的),为一个...
    发光的鱼阅读 5,269评论 0 14
  • 主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇...
    程序熊大阅读 12,849评论 1 31
  • 晚上加班,中途休息时,随手翻了翻办公桌上的台历,这台历的图片是一幅幅美景画,国内国外的都有,是些著...
    牛仔忙起来阅读 1,144评论 0 0

友情链接更多精彩内容