SSM整合

  1. 创建javaWeb项目

在SettingsFile Encodings,配置Tomcat设置项目编码格式为utf-8导入jar包,然后导入spring、springMVC、MyBatis、Junit、json、文 件上传、日志 相关的jar包,

 

2.整合配置SpringMVC

创建配置文件springMVC-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
   http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/mvc
   http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven />

在Spring的配置文件 applicationContext.xml 中整合Spring和MyBatis

  1. 开启注解扫描
  2. 配置数据源
  3. MyBatis配置
  4. 事务管理配置
  5. 事务切面配置

3、propagation属性

propagation属性的7个传播行为

  1. REQUIRED:指定当前方法必需在事务环境中运行,如果当前有事务环境就加入当前正在执 行的事务环境,如果当前没有事务,就新建一个事务。这是默认值。
  2.  SUPPORTS:指定当前方法加入当前事务环境,如果当前没有事务,就以非事务方式执行。
  3. MANDATORY:指定当前方法必须加入当前事务环境,如果当前没有事务,就抛出异常。
  4. REQUIRES_NEW:指定当前方法总是会为自己发起一个新的事务,如果发现当前方法已运行 在一个事务中,则原有事务被挂起,我自己创建一个属于自己的事务,直我自己这个方法commit 结束,原先的事务才会恢复执行。
  5. NOT_SUPPORTED:指定当前方法以非事务方式执行操作,如果当前存在事务,就把当前事 务挂起,等我以非事务的状态运行完,再继续原来的事务。
  6. NEVER:指定当前方法绝对不能在事务范围内执行,如果方法在某个事务范围内执行,容器 就抛异常,只有没关联到事务,才正常执行。
  7. NESTED:指定当前方法执行时,如果已经有一个事务存在,则运行在这个嵌套的事务中.如果 当前环境没有运行的事务,就新建一个事务,并与父事务相互独立,这个事务拥有多个可以回 滚的保证点。就是指我自己内部事务回滚不会对外部事务造成影响,只对 DataSourceTransactionManager事务管理器起效。 isolation

属性有这些值:

  1. DEFAULT:采用数据库默认隔离级别
  2. SERIALIZABLE:最严格的级别,事务串行执行,资源消耗最大;
  3. REPEATABLE_READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的 数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失
  4. READ_COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并 行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。

5. READ_UNCOMMITTED:保证了读取过程中不会读取到非法数据。隔离级别在于处理多事务 的并发问题。 readOnly:表示对应的事务应该被最优化为只读事务。 如果值为true就会告诉Spring这个方法里面没有insert、update或者delete,你只需要提供只读的 数据库Connection就行了,这种执行效率会比read-write的Connection高,所以这是一个最优化 提示。在一些情况下,一些事务策略能够起到显着的最优化效果,例如在使用Object/Relational映 射工具(如:Hibernate或TopLink)时避免dirty checking(试图“刷新”)。 timeout:指定事务超时为几秒。 一般不会使用这个属性。在JTA中,这将被简单地传递到J2EE服务器的事务协调程序,并据此得到 相应的解释。

4、添加log4j配置

#配置根 Logger
log4j.rootLogger=INFO , appender1
#配置日志信息输出目的地(appender)
#appender1 输出到控制台
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.Threshold=INFO
log4j.appender.appender1.Target=System.out
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %5p - %m%n


#
#包含 SQL 语句实际的执行时间
log4j.logger.jdbc.sqltiming=INFO
#除了 ResultSet 之外的所有JDBC调用信息,篇幅较长
log4j.logger.jdbc.audit=OFF
#包含 ResultSet 的信息,输出篇幅较长
log4j.logger.jdbc.resultset=OFF
#输出了 Connection 的 open、close 等信息
log4j.logger.jdbc.connection=OFF

#仅仅记录 SQL 语句,会将占位符替换为实际的参数
log4j.logger.jdbc.sqlonly=console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n
#log4j.logger.jdbc.sqltiming=INFO,console
#log4j.logger.jdbc.connection=INFO,console

5.添加PO:SysUser测试,添加Dao接口SysUserDao,编写SysUserDao接口对应的SysUseMapper.xml,编写Service层代码,编写Controller,编写Jsp页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Propagation是Spring框架中七种事务传播属性之一。事务传播属性决定了一个方法在运行时如何参与到现有的事务中。在Spring中,事务传播属性可以用来控制方法的事务行为。 一种常见的事务传播属性是REQUIRED。这意味着如果当前存在事务,方法将被包含在该事务中,如果当前没有事务,则会创建一个新的事务。REQUIRED是默认的事务传播属性。 另一种常见的事务传播属性是SUPPORTS。这意味着如果当前存在事务,则方法将参与该事务,如果当前没有事务,则将以非事务方式执行。 还有其他几种事务传播属性,如MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和NESTED。它们分别表示在不同的事务环境下方法的行为。 对于事务的覆盖和包含关系,覆盖指的是层层嵌套的方法共用同一个事务,事务的属性由最外围方法的属性值决定。这些方法要么同时执行成功要么同时回滚。而包含指的是大范围的事务可以包含小范围的事务,它们在逻辑上是互相独立的,每个内部事务都能独立设置一些属性,而不影响外围事务。 需要注意的是,Spring的事务是逻辑事务,并不直接影响数据库事务的实现。每个被@Transactional注解标记的方法都会创建一个事务范围,这种事务范围是逻辑上的,而不是数据库事务的实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值