A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhangxuchang 初级黑马   /  2018-7-6 09:38  /  564 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zhangxuchang 于 2018-7-6 09:39 编辑

spring_day04

Spring JDBC Template 模板类
Spring为各个持久层提供了简单操作的模板类
  • 导入相关jar包
    ​        事物管理包
    ​                spring-tx
    ​        数据库驱动jar包
    ​                spring-jdbc
    ​        mysql 驱动jar包
    ​                mysql-connector
  • 创建一个数据库连接池
    DriveManagerDataSource Spring默认内置的连接池
    方法:
    ​        setDriverClassName("com.mysql.jdbc.Driver")数据库驱动
    ​        setUrl("jdbc:mysql:///springtest")        数据库链接字符串
    ​        setUsername("")用户名
    ​        setPassword("")密码
    配置文件配置DriverManagerDataSource 相关属性
    ​        配置JdbcTemplate时必须指定dataSource源
    导入外部的properties配置文件
    ​        <context:Lproperty-placeeholder location = "classpath:*.properties" />
    ​        获取配置文件中的值
    ​                ${配置文件键}
  • 使用JdbcTemplate实现增删改
    JdbcTemplate
    ​        方法
    ​                方法参数:param = SQL语句[,?号占位符,几个占位符几个值]
    ​                update(param )                执行insert、update、delete语句,返回更新行数                                                                                
    ​                Object queryForObject(param )        返回简单数据类型
    ​                List<实体> query(param )                获取多个实体类对象
    ​                RowMapper<实体类型> 接口
    ​                        数据结果集
    ​                                数据库字段和实体类属性不对应情况才会手动实现这个接口
    ​                                queryForObject(param,new RowMapper(实体){ 实现接口方法,set封装实体类,最后返回这个实体类  })                                                                                       
    ​                                BeanPropertyRowMapper<实体类型>(实体类Class对象)                RowMapper的实现类,根据数据库字段和实体类属性自动封装

Spring事务
​        JdbcDapSupport类
​                 类继承后内部就声明了JdbcTemplate(因为在JdbcDaoSupport内部已经声明JdbcTemplate)
​                配置文件中配置JdbcTemplate数据模板
​        Spring事物的四个优点:
​                提供一致的对于不同事物管理的API
​                支持声明式事务管理
​                编程事物管理
​                优秀的整合与Spring的数据访问
​        PlatformTransactionManager
​                事物管理器,使用不同持久层技术的API管理事务,可以选择相关平台,如:HibernateTransactionManager
​                不同持久层解决技术事物管理方法不一样
​                Spring提供了针对不同Dao层框架的管事事物相关类:
​                        DataSourceTransactionManager
​                        HibernateTransactionManager
​                        ...
​        TransactionDefinition
​                描述事物定义
​                        定义事物的一些相关信息   隔离   传播   超时  只读
​                超时:
​                        默认值是-1,如果是-1代表用数据库中的默认超时时间
​                只读:true和false
​                传播:                                                                                                                                                                        
​                        它解决的是两个被事物管理方法相互调用的问题,他与数据库没关系,是程序内容维护的问题
​                常用的三种传播行为:
​                        PROPAGATION_REQIRED        默认值,两个操作处于同一个事物,如果之前没有事物,新建一个事物
​                        PROPAGATION_REQUIRES_NEW 两个操作处于不同的事物
​                        PROPAGATION_NESTED 是一种嵌套食物,他是使用SavePoint来实现的,事物回滚时可以回滚到制定的savepoint,
​                        只对DataSourceTransactionManager有效
​        TransactionSttus                                                                                                                                                        
​                描述事物的具体运行状态
​                在事物的运行过程中,得到某个时间点
声明式事务管理
事物管理方式:
​        1.编码方法,不建议使用,他具有侵入性        ,在原有的业务逻辑上添加事务代码
​                把事务的开启和结束写在一个模块中
​        2.声明式事物控制,基于AOP对目标进行代理,在原有逻辑基础上应用环绕通知解决
配置声明式管理配置:
​        1.配置AOP和TX名称空间
​        2.在applicationContext中配置
​                配置TransactionManager        Bean(事物管理器)        --TransactionManager是接口还是实现类
​        设置dataSoure属性(数据源)
​        3.配置增强
​                <tx:advice id="名称" transaction-manager="事物管理器对象Bean">
​                        tx:attributes
​                                <tx:method name="[目标Bean的]方法名称(可以用通配符)" (可选)[
​                                        propagation="事物隔离级别"
​                                        timeout=“超时时间”
​                                        read-only="默认值false"
​                                        rollback-for=“设置异常,如果产生这个异常,触发事物回滚”
​                                        no-rolback-for=“产生这个异常,不会出发事物回滚”
​                                ]>
​                /tx:attributes
​        /tx:advice
     4.定义切面
​        aop:config
​                <aop:advisor name="方法名称" pointcut="切点" />
​        声明式事物管理注解开发
​                @Transactional(各种tx:method标签下的属性)
​                1.在配置文件中添加扫描Bean
​                        <tx:annotation-driven transaction-manager="事物管理器Bean名称" />


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马