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

  1. public class Dept {
  2. private int deptId;
  3. private String deptName;
  4. public int getDeptId() {
  5. return deptId;
  6. }
  7. public void setDeptId(int deptId) {
  8. this.deptId = deptId;
  9. }
  10. public String getDeptName() {
  11. return deptName;
  12. }
  13. public void setDeptName(String deptName) {
  14. this.deptName = deptName;
  15. }
  16. }

最原始的使用jdbc连接数据库:UserDao01.java

  1. public class UserDao01 {
  2. /*
  3. * 保存方法
  4. * 需求优化的地方:
  5. * 1. 连接管理
  6. * 2. jdbc操作重复代码封装
  7. */
  8. public void save() {
  9. try {
  10. String sql = "insert into t_dept(deptName) values('test');";
  11. Connection con = null;
  12. Statement stmt = null;
  13. Class.forName("com.mysql.jdbc.Driver");
  14. // 连接对象
  15. con = DriverManager.getConnection("jdbc:mysql:///db", "root", "root");
  16. // 执行命令对象
  17. stmt = con.createStatement();
  18. // 执行
  19. stmt.execute(sql);
  20. // 关闭
  21. stmt.close();
  22. con.close();
  23. } catch (Exception e) {
  24. e.printStackTrace();
  25. }
  26. }
  27. }

对于这里的方法,我们可以从两方面来优化,分别是数据库的连接管理(使用xml配置)和jdbc操作重复代码封装(对象的创建使用Spring)

初步优化之后的方法:UserDao02.java

  1. public class UserDao02 {
  2. // IOC容器注入
  3. private DataSource dataSource;
  4. public void setDataSource(DataSource dataSource) {
  5. this.dataSource = dataSource;
  6. }
  7. public void save() {
  8. try {
  9. String sql = "insert into t_dept(deptName) values('test');";
  10. Connection con = null;
  11. Statement stmt = null;
  12. // 连接对象
  13. con = dataSource.getConnection();
  14. // 执行命令对象
  15. stmt = con.createStatement();
  16. // 执行
  17. stmt.execute(sql);
  18. // 关闭
  19. stmt.close();
  20. con.close();
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. }

现在的方法还是需要连接操作和执行以及关闭操作,再次优化,使用jdbcTemplate进行优化,如果要使用jdbcTemplate优化,需要先创建这个对象,这里在bean.xml中用Spring来创建

优化后的UserDao.java

  1. public class UserDao {
  2. // IOC容器注入
  3. // private DataSource dataSource;
  4. // public void setDataSource(DataSource dataSource) {
  5. // this.dataSource = dataSource;
  6. // }
  7. private JdbcTemplate jdbcTemplate;
  8. public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
  9. this.jdbcTemplate = jdbcTemplate;
  10. }
  11. //使用jdbc模板工具类简化jdbc操作
  12. public void save() {
  13. String sql = "insert into t_dept(deptName) values('test');";
  14. jdbcTemplate.update(sql);
  15. }
  16. public Dept findById(int id) {
  17. String sql = "select * from t_dept where deptId=?";
  18. List<Dept> list = jdbcTemplate.query(sql,new MyResult(), id);
  19. return (list!=null && list.size()>0) ? list.get(0) : null;
  20. }
  21. public List<Dept> getAll() {
  22. String sql = "select * from t_dept";
  23. List<Dept> list = jdbcTemplate.query(sql, new MyResult());
  24. return list;
  25. }
  26. class MyResult implements RowMapper<Dept>{
  27. // 如何封装一行记录
  28. @Override
  29. public Dept mapRow(ResultSet rs, int index) throws SQLException {
  30. Dept dept = new Dept();
  31. dept.setDeptId(rs.getInt("deptId"));
  32. dept.setDeptName(rs.getString("deptName"));
  33. return dept;
  34. }
  35. }
  36. }

配置文件bean.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="
  5. http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd">
  7. <!-- 1. 数据源对象: C3P0连接池 -->
  8. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  9. <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
  10. <property name="jdbcUrl" value="jdbc:mysql:///db"></property>
  11. <property name="user" value="root"></property>
  12. <property name="password" value="root"></property>
  13. <property name="initialPoolSize" value="3"></property>
  14. <property name="maxPoolSize" value="10"></property>
  15. <property name="maxStatements" value="100"></property>
  16. <property name="acquireIncrement" value="2"></property>
  17. </bean>
  18. <!-- 2. 创建JdbcTemplate对象 -->
  19. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  20. <property name="dataSource" ref="dataSource"></property>
  21. </bean>
  22. <!-- dao 实例 -->
  23. <bean id="userDao" class="h_jdbc.UserDao">
  24. <property name="jdbcTemplate" ref="jdbcTemplate"></property>
  25. </bean>
  26. </beans>

Spring 对JDBC操作的支持的更多相关文章

  1. Unit06: Spring对JDBC的 整合支持 、 Spring+JDBC Template、Spring异常处理

    Unit06: Spring对JDBC的 整合支持 . Spring+JDBC Template .Spring异常处理 1. springmvc提供的异常处理机制 我们可以将异常抛给spring框架 ...

  2. spring对JDBC的整合支持

    参考网址:https://blog.csdn.net/u013821825/article/details/51606171 springMVC,目前用到的jar包 spring IOC 5个包  + ...

  3. 玩转Spring全家桶笔记 03 Spring的JDBC操作以及SQL批处理的实现

    1 spring-jdbc core JdbcTemplate 等相关核心接口和类(核心) datesource 数据源相关的辅助类(内嵌数据源的初始化) object 将基本的JDBC操作封装成对象 ...

  4. 使用Spring简化JDBC操作数据库

    Spring的开发初衷是为了减轻企业级开发的复杂度,其对数据库访问的支持亦如此,使用Spring访问数据库能带来以下好处: 1.1     简化代码 使用原生的JDBC访问数据库,一般总是要执行以下步 ...

  5. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Spring对jdbc的支持

    Spring对jdbc技术提供了很好的支持. 体现在: 1)Spring对c3p连接池的支持很完善: 2)Spring对jdbc提供了JdbcTemplate,来简化jdbc操作: 1.使用步骤 1) ...

  7. Spring对jdbc支持

    4. Spring对jdbc支持 spring对jdbc提供了很好的支持 体现在: 1.Spring对C3P0连接池的支持很完善 2.Spring对jdbc提供了jdbcTemplate来简化jdbc ...

  8. 1.Spring对JDBC整合支持

    1.Spring对JDBC整合支持 Spring对DAO提供哪些支持 1)Spring对DAO异常提供统一处理 2)Spring对DAO编写提供支持的抽象类 3)提高编程效率,减少DAO编码量 Spr ...

  9. 8.Spring对JDBC的支持和事务

    1.Spring对JDBC的支持 DAO : Spring中对数据访问对象(DAO)的支持旨在简化Spring与数据访问技术的操作,使JDBC.Hibernate.JPA和JDO等采用统一的方式访问 ...

随机推荐

  1. OC中Runtime浅析

    近期了解了一下OC的Runtime,真的是OC中非常强大的一个机制,看起来比較底层,但事实上能够有非常多活用的方式. 什么是Runtime 我们尽管是用Objective-C写的代码,事实上在运行过程 ...

  2. scala try monad

    当输入的数据格式不正确时,ActivityData 中会出现 OutofIndex 错误,但更多的时候我们只关心想要的结果而不想了解出现了怎样的错误,然后会写出这样的代码   def parseCSV ...

  3. MongoDB管理

    前几篇文章都是从开发和使用的角度了解了MongoDB的各个知识点,这篇文章将从MongoDB管理的角度入手,了解MongoDB管理所要了解的基本知识. 数据库命令 在前面几篇文章中,已经接触了一些数据 ...

  4. 02python程序和用户交互

    在写程序时,使用python的内置函数来获取用户输入的值. >>> name = input("Input your name:")Input your name ...

  5. [Cubieboard] 在 Cubieboard 上安装 Node.js 和 npm

    你有两个选择可以实现在Cubieboard上安装NodeJS,下载别人已经编译完成适用于Cubieboard的NodeJS二进制包,或者自己下载源码自行在Cubieboard上进行编译. 使用编译完成 ...

  6. Matlab 三维绘图与统计绘图

    一. 三维绘图 p = : pi/: *pi; x = cos(p); y = sin(p); z = p; plot3(x,y,z) x = -:.:; %有-2为起点,2为递增步长,2为终止点 y ...

  7. 异常:Servlet class X is not a javax.servlet.Servlet

    使用Maven命令 mvn archetype:create 创建了一个简单的web项目.导入Eclipse运行时,报这样的异常信息: Servlet class X is not a javax.s ...

  8. path 与classpath针对JAVA来说

    Path 路径,是java编译时需要调用的程序(如java,javac等)所在的地方CLASSPATH 类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类 ...

  9. SharpGL学习笔记(十一) 光源创建的综合例子:光源参数可调节的测试场景

    灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果. 场景中可以切换视图, 以方便观察三维体和灯光的位置.环境光,漫射光,镜面反射光都可以在四种颜色间切换. 灯光位置和摄像机位置(Lo ...

  10. Android 4.0的图形硬件加速及绘制技巧

    转:http://zuiniuwang.blog.51cto.com/3709988/721798 从Android 3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速.使用GP ...