spring JDBC 事务管理
spring JDBC 事务管理
一、Spring 中的JDBC
Spring中封装了JDBC的ORM框架,可以用它来操作数据,不需要再使用外部的OEM框架(MyBatis),一些小的项目用它。
步骤:
- 导入JDBC相关的Jar包,应用dbcp连接池
|
aopalliance-1.0.0.jar aspectjweaver-1.6.8.jar commons-dbcp-1.4.jar // 数据库连接池 commons-logging-1.1.1.jar commons-pool-1.5.3.jar mysql-connector-java-5.1.38-bin.jar spring-aop-4.3.10.RELEASE.jar spring-aspects-4.3.10.RELEASE.jar spring-beans-4.3.10.RELEASE.jar spring-context-4.3.10.RELEASE.jar spring-context-support-4.3.10.RELEASE.jar spring-core-4.3.10.RELEASE.jar spring-expression-4.3.10.RELEASE.jar spring-jdbc-4.3.10.RELEASE.jar //jdbc 操作的对象包 spring-tx-4.3.10.RELEASE.jar //数据库中的事务处理包 |
- 在配置文件中配置连接池数据源,及JdbcTemplate对象
|
<!-- 加载连接数据的的属性文件 --> <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:config/jdbc.properties"/> </bean> <!-- 配置数据源对象,此数据源用的是dbcp连接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <!-- 连接数据库的基本配置 ${driver}读取到属性文件的键对应的值--> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <!-- 配置连接池相关属性,初始大小,最大连接数,最大空闲,最小空闲,最大空闲时间 --> <property name="initialSize" value="${initialSize}"/> <property name="maxActive" value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> <property name="minIdle" value="${minIdle}"/> <property name="maxWait" value="${maxWait}"/> </bean> <!-- Spring框架封装好的JDBC对象,可以操作数据 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> |
- 在程序中获取到JdbcTemplate对象,此对象就可以操作数据。
|
@Service // 扫描到IOC容器中 public class GradeService { @Autowired // 自动从IOC容器中注入对象 JdbcTemplate jdbcTemplate; // 查询所有 public List<Grade> getGrades() { String sql = "select * from grade"; // 数据行映射器,映射数据行的列与实体对象的属性对应 RowMapper<Grade> rm = new BeanPropertyRowMapper<>(Grade.class); // 可以把查询的结果集中的数据行一行行封装成实体对象 List<Grade> grades = jdbcTemplate.query(sql, rm); return grades; } // 根据ID查询单个对象 public Grade getGradeById(int id) { RowMapper<Grade> rm = new BeanPropertyRowMapper<>(Grade.class); String sql = "select * from grade where gradeId=?"; return jdbcTemplate.query(sql, new Object[] { id }, rm).get(0); } // 根据ID查询年级名称,返回单个值 public String getGradeNameById(int id) { String sql = "select gradeName from grade where gradeId=?"; return jdbcTemplate.queryForObject(sql, new Object[] { id }, String.class); } // 根据年级名称查询ID,返回单个值 public int getGradeIdByName(String name) { String sql = "select gradeId from grade where gradeName=?"; return jdbcTemplate.queryForObject(sql, new Object[] { name }, int.class); } //添加,增,删,改调用相同的方法,只是SQL指令不同 public int add(Grade g) { String sql = "insert into grade values(null,?)"; return jdbcTemplate.update(sql, g.getGradeName()); } } |
spring JDBC 事务管理的更多相关文章
- CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)
JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction ma ...
- Spring的事务管理
事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...
- spring笔记--事务管理之声明式事务
事务简介: 事务管理是企业级应用开发中必不可少的技术,主要用来确保数据的完整性和一致性, 事务:就是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全部不起作用. Spring中使 ...
- Spring应用——事务管理
事务基础:请参看:http://www.cnblogs.com/solverpeng/p/5720306.html 一.Spring 事务管理 1.前提:事务管理器 在使用 Spring 声明式事务管 ...
- spring+mybatis事务管理
spring+mybatis事务管理 最近在和朋友做一个项目,考虑用springmvc+mybatis来做,之前在公司工作吧,对于数据库这块的配置也有人再弄,最近因为这个项目,我就上网学习了一些关于数 ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...
- Spring高级事务管理难点剖析
1Spring事务传播行为 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring支持7种事务传播行为 PROPAGATION_REQUIRED(加入已有事务) 如果当前没 ...
- Spring之事务管理
事务管理对于企业应用至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性. 就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到 ...
- Mybatis整合Spring实现事务管理的源码分析
一:前言 没有完整看完,但是看到了一些关键的地方,这里做个记录,过程会有点乱,以后逐渐补充最终归档为完整流程:相信看过框架源码的都知道过程中无法完全确定是怎样的流程,毕竟不可能全部都去测试一遍 ,但是 ...
随机推荐
- Unity Loding白屏
卡loading很多时候是由于网络原因造成的,你可以尝试断网,进入离线模式.如果使用VPN也可以先关闭使用,部分Vpn的配置也会导致该问题出现.最后可以查看一下防火墙的设置.
- Linux-- 文件编辑器 vi/vim(1)
初识 vi/vim 文本编辑器 1.vi 和 vim 相同,都是文本编辑器,在 vi 模式下可以查看文本,编辑文本,是 Linux 最常用的命令,vi 模式下分为三部分,第一部分一般模式,在一般模式中 ...
- iOS为数字键盘增加完成按钮
在输入价格的时候,要求弹出的键盘只能有数字和小数点.弹出的键盘没有完成键,想要退出键盘可以点击退出,但是为了更好的用户体验,在键盘上增加UIToolbar. 设置ToolBar: - (UIToolb ...
- 【TOJ 1072】编辑距离(动态规划)
描述 假设字符串的基本操作仅为:删除一个字符.插入一个字符和将一个字符修改成另一个字符这三种操作. 我们把进行了一次上述三种操作的任意一种操作称为进行了一步字符基本操作. 下面我们定义两个字符串的编辑 ...
- grub启动引导程序配置及命令行接口详解
Grub(GRand Unified Bootloader),统一资源引导器,它的工作是提供一个菜单,允许用户选择要启动的系统或不同的内核版本:把用户选定的内核装载到RAM中的特定空间中,然后解压.展 ...
- bootstrap世界探索1——山川河流(文字排版)
世界到底是什么?其实世界很简单,正所谓一花一世界,一树一菩提,世界就在我们身边.造物神是伟大的,在我看来无论是HTML,css,js都可以看作是一个世界,但是他们是构成宏观世界不可或缺的,正如IU框架 ...
- 一条SQL语句的千回百转
SQL语言相信大家都不陌生,从本质上来说,它是一种结构化查询语言,是用来数据库之间的通信的编程语言.作为一名Java程序员,我们从Java角度来看,SQL语言相当于Java接口,而数据库是实现这个接口 ...
- Quick find Helper
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; /// <summary> /// 视图 ...
- 【 C 】高级字符串查找之 strspn 和 strcspn 的思考
我的CSDN博客 strspn 这个库函数是真的很难理解,看了很多中文描述,反正都是不知所云,给出一系列的例子,结果也是让我瞠目结舌,荒唐.荒谬.荒诞! 特此记录理解过程,最后竟然是百度百科让我明白了 ...
- 20155203 2016-2017-2 《Java程序设计》第10周学习总结
20155203 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程(Java Socket编程) Java最初是作为网络编程语言出现的,其对网络提供 ...