2014/3/12 spring jdbcTemplate和事物
来源:互联网 发布:sql储存过程如何使用 编辑:程序博客网 时间:2024/06/07 22:27
关于Spring 下jdbcTemplate的使用总结如下:
传统的jdbc对数据库操作很繁琐,需要创建连接,执行sql,释放连接等等的操作,并放在try catch快中,jdbcTemplate对以上这些操作进行了封装,笔者尝试使用了下:
1:第一步引入相关包:
pom包:
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>2.5.4</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>2.5.4</version><classifier>sources</classifier></dependency>
2.配置dataSource数据源,jdbcTemplate和DataSourceTransactionManager
<servlet-name>-servlet.xml:
<!-- 配置dal数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/> <property name="url" value="jdbc:db2://192.11.12.223:60028/SSTDB"/> <property name="username" value="admin"/> <property name="password" value="admin"/> </bean>
destroy-method="close"BasicDataSource提供了close()方法关闭数据源,设定上述属性值可以使得Spring容器关闭时,数据源能正常关闭
驱动名,数据库地址,用户名,密码,缺一不可
<!-- jdbcTemplate配置 --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean>以便后面再使用jdbcTemplate时候能够自动注入该Bean,类似setter ,getter的注入
<!-- jdbc事务配置 --><bean name="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean>该事务管理配置不全,明天在研究Spring 3.X的事物配置,包括基于tx/aop命名空间的事物配置
3:为了简单,在controller控制层里就实现了数据库访问,也就是dao,service,controller放在了一起
package com.suning.sample.web;import java.util.Map;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;/** * * jdbcTemplate测试类<br> * 〈功能详细描述〉 * * @author 13073386 * @see [相关类/方法](可选) * @since [产品/模块版本] (可选) */@Controller@RequestMapping("/admin")public class JdbcTemplateTest { @Autowired private JdbcTemplate jdbcTemplate; private static final Logger logger = Logger.getLogger(JdbcTemplateTest.class); @RequestMapping("/jdbcTemplate.action") public ModelAndView test(){ String sql = "UPDATE PMS_USER SET USER_NAME = ? WHERE USER_ID = ?"; jdbcTemplate.update(sql,"测试A","sysadmin"); return new ModelAndView("index"); }}
import org.springframework.jdbc.core.JdbcTemplate;这个是使用JdbcTemplate会引入的包
String sql = "UPDATE PMS_USER SET USER_NAME = ? WHERE USER_ID = ?";jdbcTemplate.update(sql,"测试A","sysadmin");
主要也就是这两句代码,实现对数据库的操作
4.实验结果
表之前的样子:
表之后的样子:
相关的console日志:
17:26:04.007 [http-bio-8080-exec-3] DEBUG o.s.jdbc.core.JdbcTemplate - Executing prepared SQL update17:26:04.010 [http-bio-8080-exec-3] DEBUG o.s.jdbc.core.JdbcTemplate - Executing prepared SQL statement [UPDATE PMS_USER SET USER_NAME = ? WHERE USER_ID = ?]17:26:04.051 [http-bio-8080-exec-3] DEBUG o.s.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource17:26:10.368 [http-bio-8080-exec-3] DEBUG o.s.jdbc.core.JdbcTemplate - SQL update affected 1 rows学会看日志是项很重要且容易忽略的能力
5:总结
心得ONE:jdbcTemplate对数据库操作进行了一些“薄”封装,可以提高开发效率,使得可以少关心例如数据库连接释放之类的操作,jdbcTemplate就是数据库访问模板
心得TWO:事物应该是针对业务service层存在的,比如说我一个接口EatApple和一个对应的EatAppleImp实现类,EatAppleImp中存在两条或多条调用DAO层的sql操作,通过事物配置建立一个事物和EatAppleImp的映射,从而把吃苹果包在一个事物中,则吃苹果中的sql相当于一个整体。一旦一个sql出错,可以实现整体sql回滚,以防止业务逻辑出现错误。具体的实现明天贴代码加以分析
0 0
- 2014/3/12 spring jdbcTemplate和事物
- Spring结合hibernate和jdbcTemplate多数据源事物问题
- Spring JdbcTemplate 及其声明式事物 详解
- spring jdbctemplate对事物的支持
- Spring + Jta +JDBCTemplate 分布式事物实现方式
- spring使用编程的方式进行事物处理_普通方式和jdbctemplate方式
- JDBCTemplate和HibernateTemplate事物源码解析
- JdbcTemplate和spring 实战
- Spring - JdbcTemplate 和 JdbcDaoSupport
- Spring--12jdbcTemplate
- JDBCTemplate事物处理-转载
- JDBCTemplate事物处理-转载
- spring 集成hibernate和jdbcTemplate
- spring mvc和jdbcTemplate例子
- 2014/3/13 Spring事物管理
- spring整合和事物策略
- Spring + JdbcTemplate + JdbcDaoSupport。JdbcTemplate 和 JdbcDaoSupport的不同
- Spring 和JdbcTemplate 和 JdbcDaoSupport方式对比
- 50.Pow(x, n)&数值的整数次方
- vfcbgcf bg
- 高通平台android开发总结
- 在Word 2007中为标题样式添加自动编号功能
- 辗转相除法原理实现最大公约数的求解
- 2014/3/12 spring jdbcTemplate和事物
- 医指通快速挂号攻略
- 黑马程序员-------线程(下)
- 2--3时间类
- java生成验证码 封装类
- PAT Basic Level 1017. A除以B(20)
- BNUOJ 4067 美丽的花环 (几何题)
- 十个利用矩阵乘法解决的经典题目
- 正则表达式