Spring知识梳理(4)--数据库操作、事务管理

《JdbcTemplate实现curd数据库操作》
模板(template)
创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。

1.spring框架  一站式框架
    针对Javaee三层结构,每一层都有相应的解决技术

2.spring对不同的持久化技术    都进行了封装
    在dao层使用的JdbcTemplate  是对jdbc的封装

3.JdbcTemplate使用和dbutils的使用很相似,都是对数据库进行curd操作

《添加》《修改》《删除》JDemo1
    1.搭建相关开发环境
    2.创建对象,设置数据库信息
        --别忘了数据库驱动--
    3.创建JdbcTemplate对象,设置数据源
    4.调用JdbcTemplate对象里边的方法,实现操作
        update(String sql,Object...args):int -JdbcTemplate
        第一个参数是sql语句,第二个参数是可变参数

《查询》
    使用JdbcTemplate实现查询, 需要继承接口 RowMapper,
    但JdbcTemplate针对这个借口没有提供实现类,得到不同类型的数据时,需要自己手动进行数据的封装

    1.查询表中有多少条数据   返回某一个值(int类型)
        queryForObject(String sql,Class<T> requiredType:T-jdbc)
        第一个参数是sql语句,第二个参数是 返回类型 包装类的class

    2.查询一整条数据(表中的一行,就是一整条数据,)   返回一个对象
        queryForObject(String sql,RowMapper<T> rowMapper.Object...args):T
        第一个参数是sql语句,第二个参数RowMapper接口   第三个参数是可变参数
        特别需要注意的是:queryForObject只能返回一个对象  

    3.查询多条数据,返回的是对象的list集合
        query(String sql,RowMapper<T> rowMapper.Object...args):List<T>
        第一个参数是sql语句,第二个参数RowMapper接口   第三个参数是可变参数(可以省略了)

《spring配置c3p0连接池 实现dao层调用jdbcTemplate》
导入jar包–
创建bean1.xml,进行配置

    《dao使用JdbcTemplate》
        1.1--在xml中配置service和dao对象,
               在service类中配置dao对象属性,set方法
               在xml中将dao对象注入到service中

        1.2--在xml中配置JdbcTemplate对象,
               在dao类中配置JdbcTemplate对象属性,set方法
               在xml中将JdbcTemplate对象注入到dao中

        1.3--在xml中创建c3p0连接池对象
               注入四个属性值
               将c3p0连接池对象注入到JdbcTemplate对象中

**Spring的事务管理 **
1.事物概念

    事物是对数据库操作的最基本单元,是一组操作
    事务是一种思想,它就是保证一件事情要么完全做要么完全不做
    即  要么都成功; 有一个失败,都失败

2.事物特性
    原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做
    一致性:数据不会因为事务的执行而遭到破坏
    隔离性:一个事物的执行,不受其他事务的干扰,即并发执行的事物之间互不干扰
    持久性:一个事物一旦提交,它对数据库的改变就是永久的

3.不考虑隔离性,它会产生读问题
    设置隔离级别可以解决

4.spring事务管理的两种方式
    第一种:编程式事务管理
                 通过写代码实现,一般不推荐使用
    第二种:声明式事务管理
           (1)基于xml配置文件实现
           (2)基于注解方式实现*
             无论使用哪种实现方式,都要首先配置事务管理器

5.spring事务管理的api介绍
    接口:PlatformTransactionManager--事务管理器
    实现类:spring针对不同的dao层框架,提供了接口中不同的实现类

《搭建转账环境,进行事务管理》

1.数据库搭建
    库:用户--user 
    表:账户--account
    字段:id、username、salary(工资)
2.创建service和dao类,完成注入关系
    (1)service层又叫做业务逻辑层
    (2)dao层,单纯的数据库操作层
3.bean1.xml文件--
             配置各个对象
             引入事物的相关约束
             注入各个对象属性
4.需求:账户a1 转账 1000给 a2
       a1账户少1000
       a2账户多1000
             这两个操作构成我们的业务逻辑
5.产生的问题
    可能在a1少1000后, a2还没有多1000时, 
    这个过程中出现了一个未能预知的异常、错误
    导致数据库中,a1的账户少了1000,但a2还没有加1000
    解决方案:
        添加事物进行解决--出现异常 进行【回滚--回到初始状态】操作
        在service层手动伪造一个java.lang.ArithmeticException 数学运算异常
        int i=10/0;
        然后进行事物操作

《声明式事务管理–xml》

1.配置文件方式,基于tx/aop     
    <使用Aspectj的xml配置声明式事物>
    第一步:配置事物管理器*
    第二步:配置事物增强
    第三步:配置切入点、切面

《声明式事务管理–注解》

    第一步:配置事物管理器*
    第二步:配置事物注解
    第三步:使用事物的方法 它所在的类上边  
            添加上注解     @Transactional    【04.png】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值