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. 接入Gobelieve IM开发平台的DEMO代码

    接入Gobelieve IM开发平台的DEMO代码, 请求头部: Authorization: Basic $base64(appid:$hex_md5(appsecret))意思是 appsecre ...

  2. SpringBoot读取自定义配置文件

    自定义配置文件 my-config.properties bfxy.title=bfxy bfxy.name=hello spring boot! bfxy.attr=12345 配置文件类 appc ...

  3. python_frm组件

    一.URL添加 from django.contrib import admin from django.urls import path,re_path from app01 import view ...

  4. python 正则匹配手机号

    import rephone = str(input('请输入手机号:'))# b = str(12345678912)t = re.compile(r'^1(3\d|4[4-9]|5[0-35-9] ...

  5. Redis简单介绍与数据类型

    介绍 分布式缓存 NoSql:解决高并发.高可用.高可扩展,大数据存储等一系列问题而产生的数据库解决方案. Redis:键值(Key-Value)存储数据库 Redis是使用c语言开发的一个高性能键值 ...

  6. Hadoop源码学习笔记之NameNode启动场景流程四:rpc server初始化及启动

    老规矩,还是分三步走,分别为源码调用分析.伪代码核心梳理.调用关系图解. 一.源码调用分析 根据上篇的梳理,直接从initialize()方法着手.源码如下,部分代码的功能以及说明,已经在注释阐述了. ...

  7. xss:利用编码绕过(新手向)

    当浏览器接受到一份HTML代码后,会对标签之间(<p>xxx</p>等,<script>除外).标签的属性中(<a href='xxxx'>)进行实体字 ...

  8. pow函数(数学次方)在c语言的用法,两种编写方法实例( 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值)

    关于c语言里面pow函数,下面借鉴了某位博主的一篇文章: 头文件:#include <math.h> pow() 函数用来求 x 的 y 次幂(次方),x.y及函数值都是double型 , ...

  9. golang 项目实战简明指南

    原文地址 开发环境搭建 golang 的开发环境搭建比较简单,由于是编译型语言,写好 golang 源码后,只需要执行 go build 就能将源码编译成对应平台(本文中默认为 linux)上的可执行 ...

  10. 20155215 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20155215 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑 ...