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实现事务管理的源码分析
一:前言 没有完整看完,但是看到了一些关键的地方,这里做个记录,过程会有点乱,以后逐渐补充最终归档为完整流程:相信看过框架源码的都知道过程中无法完全确定是怎样的流程,毕竟不可能全部都去测试一遍 ,但是 ...
随机推荐
- LINUX下安装pcre出现WARNING: 'aclocal-1.15' is missing on your system错误的解决办法
1.下载安装包 wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz 2.解压 tar -xzvf automake-1.15.tar. ...
- CentOS查看卸载openjdk
1.查看openjdk版本 java -versionjava version "1.7.0_51" OpenJDK Runtime Environment (rhel-2.4.5 ...
- JavaIO流(输入输出操作)
Java中执行输出和输入操作,需要通过IO流.例如最常见的System.out.println()就是一个输出流.IO流的类比较多,但核心体系就是由File. InputStream .OutputS ...
- Java面试题整理1
Java基础部分 JDK和JRE有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境.JRE:Java Runtime ...
- Spring retry实践
在开发中,重试是一个经常使用的手段.比如MQ发送消息失败,会采取重试手段,比如工程中使用RPC请求外部服务,可能因为网络波动出现超时而采取重试手段......可以看见重试操作是非常常见的一种处理问题, ...
- 百度云虚拟主机BCH安装PHP框架CodeIgniter
百度云虚拟主机BCH官方未支持CodeIgniter框架,本人参加php中文网活动获取一百度云虚拟主机,本人选的ThinkPHP版,但本人喜欢CodeIgniter框架,因此尝试在该主机上配置Code ...
- GD32F450 200M时USB不稳定
使用GD32F450的demo修改usb驱动,发现120M和168M时正常,200M时很不稳定.怀疑USB时钟分频有问题,一查果然是,记录如下: 200M是库函数主时钟分频代码如下 static vo ...
- 20155226 实验三 敏捷开发与XP实践 实验报告
20155226 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 20155236 《信息安全概论》实验二(Windows系统口令破解)实验报告
20155236 <信息安全概论>实验二(Windows系统口令破解)实验报告 北京电子科技学院(BESTI) 实验报告 课程:信息安全概论 班级:1552 姓名:范晨歌 学号:20155 ...
- 20155236 《Java程序设计》实验三(敏捷开发与XP实践)实验报告
20155236 <Java程序设计>实验三(敏捷开发与XP实践)实验报告 一.实验内容及步骤 XP基础 XP核心实践 相关工具 实验内容 1.在IDEA中使用工具(Code->Re ...