spring JDBC 事务管理

一、Spring 中的JDBC

Spring中封装了JDBC的ORM框架,可以用它来操作数据,不需要再使用外部的OEM框架(MyBatis),一些小的项目用它。

步骤:

  1. 导入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     //数据库中的事务处理包

  1. 在配置文件中配置连接池数据源,及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>

  1. 在程序中获取到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 事务管理的更多相关文章

  1. CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)

    JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction ma ...

  2. Spring的事务管理

    事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...

  3. spring笔记--事务管理之声明式事务

    事务简介: 事务管理是企业级应用开发中必不可少的技术,主要用来确保数据的完整性和一致性, 事务:就是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全部不起作用. Spring中使 ...

  4. Spring应用——事务管理

    事务基础:请参看:http://www.cnblogs.com/solverpeng/p/5720306.html 一.Spring 事务管理 1.前提:事务管理器 在使用 Spring 声明式事务管 ...

  5. spring+mybatis事务管理

    spring+mybatis事务管理 最近在和朋友做一个项目,考虑用springmvc+mybatis来做,之前在公司工作吧,对于数据库这块的配置也有人再弄,最近因为这个项目,我就上网学习了一些关于数 ...

  6. spring,mybatis事务管理配置与@Transactional注解使用[转]

    spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...

  7. Spring高级事务管理难点剖析

    1Spring事务传播行为 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring支持7种事务传播行为 PROPAGATION_REQUIRED(加入已有事务) 如果当前没 ...

  8. Spring之事务管理

        事务管理对于企业应用至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.     就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到 ...

  9. Mybatis整合Spring实现事务管理的源码分析

    一:前言 没有完整看完,但是看到了一些关键的地方,这里做个记录,过程会有点乱,以后逐渐补充最终归档为完整流程:相信看过框架源码的都知道过程中无法完全确定是怎样的流程,毕竟不可能全部都去测试一遍 ,但是 ...

随机推荐

  1. Linux 防止rm -rf 误删Shell脚本

    #!/bin/bash #:set ff=unix #:set nobomb #-*- coding:utf-8 -*- ####################################### ...

  2. Web | JavaScript的引用数据类型强制转换类型

    我在这里主要的想提下的是JavaScript中的引用类型进行强制转换类型.因为对于基本数据类型的变换大多都是雷同的,很容易熟知,但是引用数据类型有一点小插曲. JavaScript的引用类型主要为对象 ...

  3. java基础需要掌握的内容

    一.Java的基本程序设计结构 二.对象与类 三.继承 四.接口.lambda表达式与内部类 五.异常,断言与日志 六.泛型程序设计 七.集合 八.并发(线程) 九.输入与输出(IO流) 十.网络 十 ...

  4. CentOS7集成Apache和SVN

    本文主要介绍如何在CentOS7环境下集成Apache和SVN,完成后可以通过浏览器访问SVN仓库. 1.查看系统环境,关闭防火墙和SELinux. [root@Docker /]# systemct ...

  5. javascript中常见的三种开发模式

    一.单例模式: 所谓单例模式,即保证一个类只有一个实例,并提供一个访问它的全局访问点. <script type="text/javascript"> //一个类有某个 ...

  6. emlog 百度熊掌号提交插件-基于Emlog6.0.1特别版美化

    插件截图 插件简介 此插件在发布文章的时候自动向百度熊掌号提交,有利于百度熊掌号收录.基于Emlog6.0.1特别版美化的插件. 在百度推送插件的基础上修改制作而成与百度推送共存,解放双手,走向人生巅 ...

  7. PHP常用函数归类【持续整理】

    学习了这么久PHP,基础知识总感觉不牢靠,尤其是数组,字符串函数的应用,全部手敲过次手,做出总结都是基础,在回顾一下吧. 一.PHP基础语法 变量,常量     严格区分大小写,但内置结构或关键字无所 ...

  8. hadoop排序 -- 全排序

    目录 一.关于Reducer全排序 1.1. 什么叫全排序 1.2. 分区的标准是什么 二.全排序的三种方式 2.1. 一个Reducer 2.2. 自定义分区函数 2.3. 采样 一.关于Reduc ...

  9. ACM1008:Elevator

    Problem Description The highest building in our city has only one elevator. A request list is made u ...

  10. 关于C/C++语言的部分BUG

    目录 scanf格式匹配引发的错误 局部变量被释放引发的bug 数组写入超出索引维度 指针的指针引发的思考 未定义赋值的变量引发的bug 题外话 scanf格式匹配引发的错误   运行如下程序时,出现 ...