Spring 对JDBC操作的支持
1.Spring 对JDBC操作的支持
Spring对jdbc技术提供了很好的支持,体现在:
1.Spring对c3p0连接池的支持很完善
2.Spring对jdbc提供了jdbcTemplate,来简化jdbc操作,jdbcTemplate是模板工具类,类似于dbutils组件
使用步骤:
1.引入jar文件
- spring-jdbc-3.2.5.RELEASE.jar
 - spring-tx-3.2.5.RELEASE.jar
 
2.优化
优化,我们从最开始基本的jdbc使用方法UserDao01.java开始优化,到使用spring创建对象和连接UserDao02.java,再到使用jdbcTemplate来优化UserDao02.java
其余的代码主要是一个bean对象,和配置文件,以及测试类
bean对象:Dept.java
public class Dept {
    private int deptId;
    private String deptName;
    public int getDeptId() {
        return deptId;
    }
    public void setDeptId(int deptId) {
        this.deptId = deptId;
    }
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
}
最原始的使用jdbc连接数据库:UserDao01.java
public class UserDao01 {
    /*
     *  保存方法
     *  需求优化的地方:
     *  	1. 连接管理
     *  	2. jdbc操作重复代码封装
     */
    public void save() {
        try {
            String sql = "insert into t_dept(deptName) values('test');";
            Connection con = null;
            Statement stmt = null;
            Class.forName("com.mysql.jdbc.Driver");
            // 连接对象
            con = DriverManager.getConnection("jdbc:mysql:///db", "root", "root");
            // 执行命令对象
            stmt =  con.createStatement();
            // 执行
            stmt.execute(sql);
            // 关闭
            stmt.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
对于这里的方法,我们可以从两方面来优化,分别是数据库的连接管理(使用xml配置)和jdbc操作重复代码封装(对象的创建使用Spring)
初步优化之后的方法:UserDao02.java
public class UserDao02 {
    // IOC容器注入
    private DataSource dataSource;
    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    public void save() {
        try {
            String sql = "insert into t_dept(deptName) values('test');";
            Connection con = null;
            Statement stmt = null;
            // 连接对象
            con = dataSource.getConnection();
            // 执行命令对象
            stmt =  con.createStatement();
            // 执行
            stmt.execute(sql);
            // 关闭
            stmt.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
现在的方法还是需要连接操作和执行以及关闭操作,再次优化,使用jdbcTemplate进行优化,如果要使用jdbcTemplate优化,需要先创建这个对象,这里在bean.xml中用Spring来创建
优化后的UserDao.java
public class UserDao {
    // IOC容器注入
//	private DataSource dataSource;
//	public void setDataSource(DataSource dataSource) {
//		this.dataSource = dataSource;
//	}
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    //使用jdbc模板工具类简化jdbc操作
    public void save() {
        String sql = "insert into t_dept(deptName) values('test');";
        jdbcTemplate.update(sql);
    }
    public Dept findById(int id) {
        String sql = "select * from t_dept where deptId=?";
        List<Dept> list = jdbcTemplate.query(sql,new MyResult(), id);
        return (list!=null && list.size()>0) ? list.get(0) : null;
    }
    public List<Dept> getAll() {
        String sql = "select * from t_dept";
        List<Dept> list = jdbcTemplate.query(sql, new MyResult());
        return list;
    }
    class MyResult implements RowMapper<Dept>{
        // 如何封装一行记录
        @Override
        public Dept mapRow(ResultSet rs, int index) throws SQLException {
            Dept dept = new Dept();
            dept.setDeptId(rs.getInt("deptId"));
            dept.setDeptName(rs.getString("deptName"));
            return dept;
        }
    }
}
配置文件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"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- 1. 数据源对象: C3P0连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql:///db"></property>
        <property name="user" value="root"></property>
        <property name="password" value="root"></property>
        <property name="initialPoolSize" value="3"></property>
        <property name="maxPoolSize" value="10"></property>
        <property name="maxStatements" value="100"></property>
        <property name="acquireIncrement" value="2"></property>
    </bean>
    <!-- 2. 创建JdbcTemplate对象 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- dao 实例 -->
    <bean id="userDao" class="h_jdbc.UserDao">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>
</beans>
												
											Spring 对JDBC操作的支持的更多相关文章
- Unit06: Spring对JDBC的 整合支持 、 Spring+JDBC Template、Spring异常处理
		
Unit06: Spring对JDBC的 整合支持 . Spring+JDBC Template .Spring异常处理 1. springmvc提供的异常处理机制 我们可以将异常抛给spring框架 ...
 - spring对JDBC的整合支持
		
参考网址:https://blog.csdn.net/u013821825/article/details/51606171 springMVC,目前用到的jar包 spring IOC 5个包 + ...
 - 玩转Spring全家桶笔记 03 Spring的JDBC操作以及SQL批处理的实现
		
1 spring-jdbc core JdbcTemplate 等相关核心接口和类(核心) datesource 数据源相关的辅助类(内嵌数据源的初始化) object 将基本的JDBC操作封装成对象 ...
 - 使用Spring简化JDBC操作数据库
		
Spring的开发初衷是为了减轻企业级开发的复杂度,其对数据库访问的支持亦如此,使用Spring访问数据库能带来以下好处: 1.1 简化代码 使用原生的JDBC访问数据库,一般总是要执行以下步 ...
 - [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
		
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
 - Spring对jdbc的支持
		
Spring对jdbc技术提供了很好的支持. 体现在: 1)Spring对c3p连接池的支持很完善: 2)Spring对jdbc提供了JdbcTemplate,来简化jdbc操作: 1.使用步骤 1) ...
 - Spring对jdbc支持
		
4. Spring对jdbc支持 spring对jdbc提供了很好的支持 体现在: 1.Spring对C3P0连接池的支持很完善 2.Spring对jdbc提供了jdbcTemplate来简化jdbc ...
 - 1.Spring对JDBC整合支持
		
1.Spring对JDBC整合支持 Spring对DAO提供哪些支持 1)Spring对DAO异常提供统一处理 2)Spring对DAO编写提供支持的抽象类 3)提高编程效率,减少DAO编码量 Spr ...
 - 8.Spring对JDBC的支持和事务
		
1.Spring对JDBC的支持 DAO : Spring中对数据访问对象(DAO)的支持旨在简化Spring与数据访问技术的操作,使JDBC.Hibernate.JPA和JDO等采用统一的方式访问 ...
 
随机推荐
- Struts2_day02讲义_使用Struts完成对客户的新增操作
 - [AX2012]在SSRS报表中获取从Menuitem传入的记录
			
在较早版本的AX中我们运行一个报表时会用到类RunBaseReport,从它扩展一个子类,再由它运行报表,一个典型的Axapta3中的例子: class ReportProdInfo extends ...
 - css counter的使用方法
			
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - linux修改文件所属用户和用户组
			
使用chown命令可以修改文件或目录所属的用户: 命令:chown 用户 目录或文件名 例如:chown testAdmin /home/work (把home目录下的xua ...
 - RF-For循环使用
			
场景1:
 - RF-字符串转为整数的方法
 - Ansible Playbook handlers 语句
			
handlers 用法如下,表示当 tasks 执行成功之后再执行 handlers,相当于 shell 中的 && 用法,如果 tasks 执行失败是不会执行 handlers 语句 ...
 - [Cubieboard] Node.js 在 Lubuntu 上安装指南
			
在 Ubuntu 下安装 Node.js sudo apt-get install python-software-properties python g++ make sudo add-apt-re ...
 - #pragma init_seg
			
先进后出原则,最先初始化的最后析构! 1.C++中全局对象.变量的构造函数调用顺序是跟声明有一定关系的,即在同一个文件中先声明的先调用.对于不同文件中的全局对象.变量,它们的构造函数调用顺序是未定义的 ...
 - 【大数据系列】hadoop单节点安装官方文档翻译
			
Hadoop: Setting up a Single Node Cluster. HADOOP:建立单节点集群 Purpose Prerequisites Supported Platforms R ...