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内核基数树应用分析

    Linux内核基数树应用分析 ——lvyilong316 基数树(Radix tree)可看做是以二进制位串为关键字的trie树,是一种多叉树结构,同时又类似多层索引表,每个中间节点包含指向多个节点的 ...

  2. [USACO15DEC]最大流Max Flow(树链剖分,线段树)

    FJ给他的牛棚的N(2≤N≤50,000)个隔间之间安装了N-1根管道,隔间编号从1到N.所有隔间都被管道连通了. FJ有K(1≤K≤100,000)条运输牛奶的路线,第i条路线从隔间si运输到隔间t ...

  3. php网易云信im即时通讯和聊天室

    话不多说 直接上代码 <?php/** * Created by PhpStorm. * User: lhl * Date: 2019/4/10 * Time: 17:38 */ namespa ...

  4. iOS开发者证书-详解/生成/使用

    本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密. 对称密钥加密 对称密钥加密(Sy ...

  5. Kafka跨网络访问设置

    实际场景: kafka应用通过docker进行部署并暴露出不同kafka节点到不同的指定端口: 业务系统通过虚拟机进行部署: docker宿主机与业务系统在同一个局域网: 报错: 业务系统连接kafk ...

  6. linux——Shell编程基础

    1. shell 脚本的执行方式 1.1 直接绝对路径执行 1.2 相对路径执行 首先进入到shell脚本所造的目录 PS:用./执行要增加x权限.用bash执行可以不增加x权限 1.3 在当前she ...

  7. ubuntu下pycharm快捷方式创建

    终端输入:sudo gedit /usr/share/applications/Pycharm.desktop 粘贴模板: [Desktop Entry] Type=Application Name= ...

  8. Shrio第一天——入门与基本概述

    一.Shiro是什么 Apache Shiro是Java的一个安全框架.(希罗:/笑哭) Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境. sh ...

  9. 20155310马英林 实验2 Windows口令破解

    实 验 报 告 实验名称: 实验二 口令破解 姓名:马英林 学号: 20155310 班级: 1553 日期: 2017.10.24 一. 实验环境 •系统环境:Windows •网络环境:交换网络结 ...

  10. DIV+CSS实现竖排按钮样式

    <div class="btn_left btn_left1">每日单元成功率</div><br/> <div class="b ...