Y2总结

一 初始MyBatis
为什么要学习框架技术
使用PPT模板制作文档的优点:
(1) 不用考虑布局,模板等问题,提高了效率
(2) 可以专心于PPT的内容,使演讲的”质量”更有保障
(3) 新手也可以制作很专业的幻灯片演讲稿
使用框架构建项目也是基于这样考虑,当确定使用哪个技术框架后,就已经有几个:”半成品”,然后在哪个半成品里填上内容,工作就完成了,框架技术的优势如下.
(1) 不用考虑公共问题,框架已经帮我们做好了,
(2) 可以专心于业务逻辑,保证核心业务逻辑的开发质量
(3) 结构统一,便于学习和维护
(4) 框架中集成了前人的问题,可以帮助新手写出稳定,性能优良而且结构优美的高质量程序.
框架的概念
框架(Framework)是一个提供了可重用的公共结构的半成品.它为我们结构新建的应用程序提供了极大的便利.
主流框架的介绍

  1. Struts 2框架
  2. Hibernate 框架
  3. Spring框架
  4. SpringMVC框架
  5. MyBatis框架
    MyBatis介绍及其环境搭建
    数据持久化概念
    数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称
    MyBatis框架及ORM
    1 MyBatis框架简介
    MyBatis中一个开源的数据持久层构架,它内部封装了通过JDBC访问数据数据的操作,支持普通的SQL查询,存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结构集的检索.
    2 什么是ORM
    ORM即对象/关系映射,是一种数据持久技术,它在对象模型和关系型数据之间建立起对应关系,并提供了一种机制,通过JavaBean对象去操作数据库中的数据.
    MyBatis环境搭建
  6. 下载需要的jar文件
  7. 部署jar文件
  8. 创建MyBatis核心配置文件configuraration.xml
  9. 创建持久化类(POJO)和SQL映射文件
  10. 创建测试类
    MyBatis框架的优点缺点及其适合场合
  11. MyBatis框架的优点
    a) 与JDBC相比,减少了50%以上的代码量
    b) MyBatis是最简单的持久化框架,小巧并且简单易学
    c) MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加如何影响,SQL写在XML
  12. MyBatis框架的优点
    a) SQL语句的编写工作量较大,对开发人员编写SQL语句的功底一定要求
    b) SQL语句依赖数据库,导致数据库移植性差,不能随便换数据库
  13. MyBatis框架适用场合
    MyBatis的基本要素—核心对象
    SQLSessionFactorBuilder
  14. SQLSessionFactorBuilder 的作用
    SQLSessionFactorBuilder负责构建SqlSessionFactor,并且提供了多个build( )方法的重载.
  15. SqlSessionFactoryBuilder的生命周期和作用域
    SqlSessionFactorBuilder的最大特点是;用过即丢
    SqlSessionFactor
  16. SqlSessionFactor的作用
    SqlSessionFactor简单的理解就是创建SqlSession实例的工厂.
  17. SqlSessionFactory的生命周期和作用域
    SqlSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在.
    SqlSession
  18. SQLSession的作用
    SQLSession是用于执行持久化操作的对象,类似于JDBC中的Connection.它提供了面向数据库执行SQL命令所有方法,可以通过SQLSession实例直接运行已映射的SQL语句.
    Mybatis的基本要素—核心配置文件
    Mybatis-config.xml文件结构
    Mybatis-config.xml文件需配置一些基本元素,需要注意的是,该配置文件的元素节点是有先后顺序的.
  19. properties元素
  20. setting元素
  21. typeAliases元素
  22. environments元素
  23. mappers元素
    DTD文件的引入
  24. DTD文件的位置
  25. 新增XML Catalog

二 SQL映射文件
使用MyBatis实现条件查询
SQL映射文件
MyBatis真正强大之处就在于SQL映射语句,也就它的魅力所在.下面是关于SQL语句映射文件的几个顶级元素配置:

  1. mapper:映射文件的跟元素节点,只要一下属性namespace(命名空间)
  2. cache:配置给命名空间的缓存.
  3. Cache_ref:从其他命名空间引用缓存配置
  4. resultMap:用来描述数据库结果集和对象的对应关系
  5. sql:可以重用的SQL块,也可以,被其他语句引用
  6. insert:映射插入语句
  7. update:映射更新语句
  8. delete映射删除语句
  9. select映射查询语句
    使用select完成单条件查询
    与查询对应的select元素的使用MyBatis时最常用的元素.
    别名与Java类型映射
    别名 映射的类型 别名 映射的类型
    string String double Double
    byte Byte float Float
    long Long boolean Boolean
    short Short date Date
    int Integer map Map
    integer Integer hashmap HashMap
    arraylist ArrayList list List

使用select完成多条件查询
示例

select * from smbms_user
where userName like CONCAT(‘%’,#(userName),’%’)
and userRole=#{userRole}

示例

select * from smbms_user
where userName like COUNT(‘%’,#{uName},’%’) and userRole = #{uRole}

使用resultMap完成查询结果的展现
解决方案:
(1) 修改POJO:User.java,增加userRoleName属性,并修改查询用户列表的SQL语句,对用户表和角色表进行连表查询,使用resultType做自动映射
(2) 通过resultMap来映射自定义结果.

  1. resultType
    resultType直接表示返回类型,包括基础数据类型和复杂数据类型
  2. resultMap
    resultMap则是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到哪一个result上.它的应用场景一般是:数据库字段信息与对象属性不一致或者需要复杂的联合查询以便自动控制映射效果
  3. resultType和resultMap的关联
    在MyBatis进行查询映射的时候,其实查询出来的每个字段值都放在一个对应的Map里面,其中键是字段名,值则是其对应的值.
  4. resultMap的自动映射级别
    使用MyBatis实现增删改操作
    使用insert完成增加操作
    示例
    <!—增加用户–>

    Insert into smbms_user (userCode,username,userPassword,gender,birthday,phone,
    Address,userRole,createBy,creationDate)
    Value(#{userCode},#{username},#{userPassword},#{gender},
    #{birthday},#{phone},#{address},#{userRole},
    #{createdBy},#{creationDate})

    使用update完成修改操作
    <!—修改用户–>

    Update smbms_user set userCode=#{userCode},username=#{username},
    userPassword=#{userPassword},gender=#{gender},
    phone=#{phone},address=#{address},
    userRole=#{userRole},modifyBy=#{modifyBy},
    modifyDate=#{modifyDate},birthday=#{birthday}
    where id =#{id}

    使用@Param注解实现多参数入参
    当方法参数有多个时,每个参数前都需要增加@param注解:
    public int updatePwd(@param(“id”)Integer id,@param(“userPassword”)String pwd);
    使用delete完成删除操作
    示例 Delete from smbms_user where id=#{id}

使用resultMap实现高级结果映射
resultMap的基本配置项

  1. 属性
    a) Id:resultMap的唯一标识
    b) 表示该resultMap的映射结果类型
  2. 子节点
    a) id:一般对应数据库中该行的主键id,设置此项可以提升MyBatis性能.
    b) result:映射到JavaBean的某个”简单类型”属性,如基本数据类型的属性.
    Association
    Association:映射到JavaBaen的某个”复杂类型”属性,比如JavaBean类,即JavaBean内部嵌套了一个复杂数据类型属性,这种情况就属于复杂类型的关联.
    Collection
    Collection元素的作用和association元素的作用差不多一样,事实上,他们非常类似,也是映射到JavaBean的某个”复杂类型”属性,只不过这个属性是一个集合列表,即JavaBean内部嵌套一个复杂数据类型(集合)属性
    resultMap自动映射级别和MyBatis缓存
    resultMap自动映射级别
    在前文中已经给大家介绍过关于resulMap自动映射级别的相关知识.
    MyBatis缓存
  3. 一级缓存
    一级缓存是基于PerpetualCache的HashMap本地缓存,作用范围为session域内,当session flush或者close之后,该session中所有的cache就会被清空
  4. 二级缓存
    二级缓存就是global caching,它超出session范围之外,可以被所有SQLSession共享,开启它只需要在MyBatis的核心配置文件setting中设置即可
  5. 二级缓存配置
    a) MyBatis的全局cache配置,需要在mybatus-config.xml的setting中设置.
    b) 在mapper文件中设置缓存,默认情况下是没有开启缓存的.

三 动态SQL
使用动态SQL完成多条件查询
使用if+where实现多条件查询

  1. If : 根据用户角色和用户名称完成对用户表的查询操作,在该示例中,采用的是封装User对象入参,进行查询.

解决方案是使用动态SQL的if元素实现多条件查询

  1. Where
    Where 元素主要用来简化SQL语句中的where条件判断,并智能地处理and和or,不必担心余关键导致的语法错误.

第一种情况: 参数userName传入空字符串,参数roleId,测试方法代码片段.
第二种情况: 两个参数传入的值均为空.
使用if+trim实现多条件查询
在MyBatis中除了使用if+where实现多条件查询,还有一个更为灵活的元素trim可以替代之前的做法.
Trim元素也会自动识别其标签内是否有返回值,若有返回值,在自己包含的内容前加上某些前缀也可以在其后加上某些后缀,与之对应的属性是prefix和suffix;可把包含的内容的首部某些内容覆盖,或者把尾部的某些内容覆盖,与其对应的属性prefixOverrides和suffixOverrides;

prefix: 前缀,作用是通过自动识别是否有返回值,在trim包含的内容上加上前缀
suffix: 后缀,后缀作用作用是在trim包含的内容上加上后缀
prefixOverrides:对于trim包含内容的首部进行指定内容,的忽略
suffixOverfrides对于trim包含内容的尾部进行指定内容的忽略.
使用动态SQL实现更新操作
使用if+set改造更新操作

对于更新方法,(modify())的参数User对象,只设置了用户名称(userName),地址(address),更新者(modifyBy),跟新时间(modifyDate),用户id(id)这五个属性,即数据库只对四个字段(username,address,modifyBy,modifyDate)进行相应更新操作.

Set元素主要用于更新操作,它的主要功能和where元素差不多,主要是在包含的语句前输出一个set,若包含的语句是以逗号结束的,会自动把该逗号忽略掉,再配合if元素就可以动态地更新需要修改的字段;而不需修改字段,则可以不再被更新.下面改造UserMapper.xml中的修改用户信息.
使用if+trim改造修改操作
在MyBatis中除了使用if+where 实现多条件查询,还有一个更为灵活的元素trim可以替代之前的做法
Trim元素也会自动识别其标签内是否有返回值,若有返回值,会在自己包含的内部前加上某些前缀,也可以在其后加上某些后缀,与之前的属性是prefix和suffix;也可把包含内容的首部和某些内容覆盖.或者把尾部的某些内容覆盖,与之对应的属性是prefixOverrides和suffixOverrides;正因为trim有这样强大的功能,我们可以利用trim来替代where元素,并实现where元素相同的效果.
Prefix:前缀,作用的通过自动识别是否有返回值后.在trim包括内容上加上前缀
Suffix:前缀,作用是在trim包含的内容上加上后缀.
PrefixOverrides:对于trim包含内容的首部进行指定内容的忽略.
PrefixOverrides:对于trim包含内容的首尾进行指定内容的忽略.
使用foreach完成复杂查询
MyBatis入参为数组类型的foreach迭代
首先修改UserMapper.java,增加接口方法:根据传入的用户角色列表获取该角色列的用户信息,参数的角色列表,该参数类型为整型为整型整数数组.
对于SQL条件循环,需要使用foreach标签.通过上述代码.来介绍下foreach的基本标签:
Item:表示集合中每一个元素进行迭代时的别名
Index:指定一个名称,用于表示的迭代过程中,每次迭代的位置.
Open:表示该表示该语句以什么开始{ 既然是 in 条件语句,所以必然是以”{”开始}.
Separate: 表示在每次进行迭代之间以什么符号作为分隔.
Close:表示语句以什么结束{ 既然是 in 条件语句,所以必然是以”{”开始}.
Collection: 最关键并最容易出错的属性,需格外注意,该属性必须指定,不同情况下,该属性的值是不一样的.
MyBatis入参为List类型的foreach迭代
实现通过指定的角色列表获德相应的用户信息列表,方法参数为数组现在我们更改参数类型.
MyBatis入参为Map类型的foreach迭代
通过对freach标签的cllection属性的学习。我们发现不管传入的是单参数还是多参数,都可以得到有效解决,若单参数入参,是否可以封装成Mp进行入参呢?答案是肯定的,单参数也可以封装Nup进行入参,实际上, MyBatis 在进行参数入参的时候,都会把它封装成一个Map而Map的key就是参数名对应的参数值就是Map的value.若参数为集合的时候,Map 的key会根据传入的是List还是数组对象相应地指定为"ists 或者"aray .现在就更改之前的演示示例根据用户角色列表,获取该角色列表下用户列表的信息,此处参数不使用List或者数组,直接封装成 Map来.
五 Spring核心概念
初始Spring
企业级应用开发
Spring致力于JavaEE应用的各种解决方案,而不是仅仅专注于某一层的方案.可以说Spring是企业应用的”一站式”选择,Spring贯穿表现层,业务层,持久层.然而Spring并不想取代那些取代那些已有的框架,而不是以高度的开放性与它们无缝整合
Spring的”绿草丛”
Spring是一个全面的解决方案,但它坚持一个原则:不重新发明轮子.已经有较好的解决方案的领域,Spring绝对重复性的实现.
Spring框架由大约20个功能模块组成.这些模块被分成六个部分,分别是Core Container DataAccess/Integration,Web,AOP(Aspect Oriented Programma),Instrumentation及Test.
Spring Core是框架的最基本部分,提供最基础部分,提供了IoC特性,Spring Context为企业级开发提供了便利和集成工具.
Spring loC
理解”控制反转”
控制反转(Inversion of Control ,loC),也称为依赖注入(Dependency Injection,DI),是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度
UserServiceImpl对UserDaoImpl存在依赖关系.这样的代码很常见,但是存在一个严重的问题,即UserServiceImpl和UserDaoImpl高度耦合,如果因为需求变化需要替换UserDao的实现类,将导致UserServiceImpl中的代码随之发生修改.如此,程序将不具备优良的可扩展性和可维护性,甚至在开发中难以测试.
如何使用”依赖注入”

  1. 定义Ink和Paper接口
  2. 使用Ink接口和Paper接口开发Printer程序
  3. 开发Ink接口和Paper接口的实现类:ColorInk,GreyInk和TextPaper
  4. 组装打印机,运行调试
    Spring AOP
    理解”面向切面编程”
    面向切面编程(Aspect Oriented Programming ,AOP)是软件编程思想发展到一定阶段的产物,是面向对象编程(Object Oriented Programming ,OPP)的有益补充.AOP一般适用于具有横切逻辑的场合,如访问控制,事务管理,性能监测等
  5. 切面(Aspect):一个模块化的横切逻辑(或称横切关注点),可能会横切多个对象
  6. 连接点(Join Point):程序执行中的某个具体的执行点.
  7. 增强处理(Advice):切面在某个特定链接点上执行的代码逻辑
  8. 切入点(Pointcut):对连接点的特征进行描述,可以使用正则表达式.
  9. 目标对象(Target object):被一个或多个切面增强的对象
  10. AOP代理(AOP proxy):由AOP框架所创建的对象,实现执行增强处理方法等功能,
  11. 织入(Weaving):将增强处理连接到应用程序中的类型或对象的过程.
    使用Spring AOP实现日志输出
    六 AOP使用扩展
    多种方式实现依赖注入
    构造注入
    如何通过构造注入为业务类注入所依赖的数据访问层对象,实现保存用户数据的功能?
    (1) 获取Spring开发包并为工程添加Spring支持
    (2) 为业务层和数据访问层设计接口,声明所需方法
    (3) 编写数据访问层接口UserDao的实现类,完成具体的持久化操作
    (4) 在业务实现类中声明UserDao接口类型的属性,并添加适当的构造方法为属性赋值.
    (5) 在Spring的配置文件中将DAO对象以构造注入的方式赋值给业务实例中的User类型的属性.
    (6) 在代码中获取Spring配置文件中装配好的业务类对象,实现程序功能

经验:

  1. 一个元素表示构造方法的一个参数,且使用时不区分顺序.当构造方法的参数出现混淆,无法区分时,可以通过元素的index属性属性指定该参数的位置索引,位置从开始通过<construction元素还提供了type属性来用来指定参数的类型,避免字符串和基本数据类型的混淆
  2. 构造注入的时效好,在对象实例化时就得到所依赖的对象,便于在对象的初始化方法中依赖对象
    使用p命令空间实现属性注入
    Spring配置文件在2.0版本开始采用schema形式,使用不同的命令空间管理不同类型的配置使得配置文件更具扩展性.
    P命名空间的特点是使用属性而不是子元素的形式配置Bena的属性,从而简化Bean的配置.使用传统的子元素配置的代码.
    注入不同数类型
    Spring提供了不同的标签来实现各种不同类型参数的注入,这些标签对于设值注入和构造注入都适用.
  3. 注入直接量(基本数据类型,字符串)
  4. 引用其他an组件
  5. 使用内部Bean
  6. 注入集合类型的属性
  7. 注入null的空字符值
    其他增强类型
    异常抛出增强
    异常抛出增加的特点是在目标方法抛出异常时织入增强处理.使用异常抛出增强,可以为各功能模块提供统一的,可可拨查的异常处理方案.实现异常抛出增强的代码.
    最终增强
    最终增加的特点无论方法抛出异常还是正常退出;该增强都会得到执行,类似于异常处理机制中finally块的作用,一般般用于释放.使用最终增强.
    环绕增强
    环绕增强在目标方法的前台都可以织入增强处理.环绕增强是功能最强大的增强处理,Spring把目标方法的控制权全部交给了它.在环绕增强处理,可以获取修改目标方的参数,返回值,可以对它进行异常处理,甚至可以决定目标是否执行行.
    使用注解实现IoC的配置
    使用注解定义Bean
    Spring提供的三个特殊的注释
    @Repository:用于标注DAO类
    @Service:用于标注业务类
    @Controller:用于标注控制器类
    使用注解实现Bean组件装配
    Spring提供了@Autowired注释实现Bean的装配.
    @Autowired采用按类型匹配的方式为属性自动装配合适的依赖对象,即容器会查找和属性类型相匹配的Bean组件,并自动为属性注入.
    加载注解定义Bean
    使用Java标准注解完成装配
    除了提供@Autowired注解,Spring还支持使用JSR-250中定义的@Resource注解实现组件装配该标准注解也能对类的成员变量或方法入参提供了注入功能
    说明:
    JSR全称是Java Specification Requests,即Java规范提案,Java的版本和功能在不断地更新和扩展,JSR就是用来规范这些功能和接口的标准,已经变成java业界的一个重要标准
    使用注解定义切面
    AspectJ简介
    AspectJ是个面向切面的框架, 它扩展了Java语言, 定义了AOP语法,能够在编译期提供代码的织入,所以它有一一个专门的编译器用来生成遵守字节编码规范的Class文件。
    @AspectJ是AspectJ 5新增的功能,使用JDK 5. 0注解技术和正规的AspectJ切点表达式语言描述切面。因此在使用@AspectJ之前,需要保证所使用的JDK是5.0或其以上版本,否则无法使用注解技术。
    Spring通过集成AspectJ实现了以注解的方式定义切面,大大减少了配置文件的工作量。此外.因为Java的反射机制无法获取方法参数名,Spring 还需要利用轻量级的字节码处理框架asm (已集成Spring core模块中)处理@AspectJ中描述的方法参数名.
    使用注解标注切面
    在Spring中如何使用注解来实现日志切面?
    (1) 使用注释定义前置增强和后置增强实现日志功能
    (2) 编写Spring配置文件,完成切面织入
    Spring的切面配置小结
    Spring在同一个问题上提供了多种灵活选择,反倒容易令初学者感到迷惑。我们应该根据项目的具体情况做出选择:如果项目采用JDK5,0以上版本,可以考虑使用@AspectJ注解方式,减少配置的工作量:如果不愿意使用注解或项目采用的JDK 版本较低而无法使用注解,则可以选择使用aop:aspect配合普通JavaBean的形式。

七 MyBatis与Spring的整合
Spring对Mybatis的整合思路
引入Spring框架的引入,以上流程将全部移交给Spring,发挥Spring框架Bean容器的作用,接管组件的创建工作,管理组件的生命周期,并对组件之间的依赖关系进行解耦合管理
Spring整合Mybatis的准备工作

  1. 在项目中加入Spring,Mybatis及整合相关的JAR文件
  2. 建立开发目录结构创建实体类
  3. 创建数据访问接口
  4. 配置SQL映射文件
  5. 配置Mybatis配置文件
    实现Spring对Mybatis的整合
    配置数据源
    对于任何持久解决方案,数据库连接都是首先要解决的问题.在Spring中,数据源作为一个重要组件可以单独进行配置进行配置和维护.我们将Mybatis配置文件中有关数据源的配置移除,转移的Spring配置文件中进行维护.
    配置SQLSessionFactoryBean
    配置完整数据源,就可以在基础上集合SQL映射文件信息以及Mybatis配置文件中的其他信息,创建SQLSessionFactory实例.
    在MyBatis中,SqlSessionFactory的实例需要使用SQLSessionFactoryBuilder创建,而在集成环绕中则可以使用Mybatis-Spring整合包中的SQLSessionFactoryBean来代替.
    使用SQLSessionTemplate实现数据库的操作
    SQLSessionTemplate类实现了Mybatis的SQLSession接口,可以替换Mybatis中原有的SQLSession实现类提供数据库访问操作.使用SqlSessionTemplate可以更好地Spring服务器融合合并简化部分流程化工作,可以保证和当前Spring事务相关联,自动管理会话的生活周期,包括必要的关闭,提交和回滚操作.

注意:
(1) 创建SQLSessionTemplate实例时,需要通过其构造方法注入SQLSessionFactory实例.这里引用的是前文配置过的id为SQLSessionFactory的Bean
(2) 与Mybatis中默认的SqlSession实现不同,SqlSessionTemplate是线程安全,可以以单例模式配置并多个DAO对象共用,而不必为每个DAO单独配置一个SQLSessionTemplate实例.
注入映射器实现
SpiSessianTemplate作为SqlSession接口的实现,自然也具备相同作用的gotMapper( )方法实现但在集成环境中直接在代码中使用getMapper()方法并非最佳选择。利用MyBatis Spring 提供的组件。可以不必每次调用getMappel方法。而是通过配置的方式直接为业务对象注入映射器实现,无需额外的编码,对于不包含其他非MyBatis的工作的数据访问操作,这是首选的做法
使用MapperFactoryBean注入映射器
如果仅使用SQLSessionTemplate执行基本的数据访问操作,而不包含其他非mybatis的工作,
可以不必手工编码使用SQLSessiontemplate或SQLSessionDaoSupport;来实现此类Dao.MyBatis-Spring提供MapperFactoryBean,能够以配置的方式生成映射器来实现

注意:
SQL映射文件中必须遵循以下命名原则
(1) 映射的命名空间和映射器接口的名称
(2) 映射元素的id和映射器接口的方法相同
使用MapperScannerConfigurer注入映射器
在Spring配置文件中使用MapperFactoryBean对映射器做配置,简化了DAO模块的编码,不过如果映射器很多,相应的配置项也会很多.为了简化配置工作量,Mybatis-Spring中提供了
MapperScannerConfigurer,它可以扫描指定包中的接口并将它直接注册MapperFactoryBean.
为业务层添加声明事务
配置声明式事务

  1. 首先在UserMapper和UserMapper.xml中添加相关方法中和SQL映射.(由于使用MapperScannerConfigurer动态创建映射实现,没有自定义的接口实现类,也就没有相关代码需要修改)
  2. 在业务组件中添加相应的业务方法
  3. 接下来为业务方法配置事务切面,这需要用tx和aop两个命名空间下的标签,所以首先要在Spring配置文件中导入这两个命名空间
  4. 接下来需要配置一个管理器组件
    使用注解实现声明式事务处理
    Spring还支持使用注解配置声明式事务,所使用的注解@Transactional
    @Transactional注解也可以设置事务属于的值,默认的@Transactional设置如下
  5. 事务传播设置是PROPAGATION_REQUIRED
  6. 事务隔离级别 ISOLATION_DEFAULT
  7. 事务是读/写
  8. 事务超时默认是依赖于事务系统的,或者事务超时没有被支持
  9. 如何RuntimeException将触发事务回滚,但是任何checked Exception 将不触发事务回滚.这些默认的设置当然也就是可以改变的.@Transactional注解的各属性:

@Transactional注解的属性
属性 类型 说明
Propagation 枚举型:propagation 可选的传播性设置.使用举例:
@Trabsactional(propagatuib=Propagation.REQUIRES_NEW)
Isolation 枚举型:isolation 可选的隔离性级别,使用举例
@Transaction(isolation=Isolation.READ_COMMITTED
readOnly 布尔型 是否为制度型事务,使用举例:
@Transactional(readOnly=true)
Rollback 一组Class类的实例,必须是Throwable的子类 一组异常类,遇到时必须进行回滚.使用举例:
@Transactional(rollbackFor={SQLException.class}),多个异常可用英文逗号隔开
RollbackForClassName 一组Class的名称,必须是Throwable的子类 一组异常类名,遇到时必须进行回滚.使用举例:
@Transactional(rollbackForClassName={“SQLException”}),
多个异常可用英文逗号隔开
noRollbackFor 一组Class类的实例,必须是Throwable的子类 一组异常类,遇到时必须不回滚

noRollbackForClassName 一组Class类的名称,必须是Throwable的子类 一组异常类名,遇到时必须不回滚
Timeout Int型(以秒为单位) 事务超时.使用举例:@Transactional(timeout=1)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值