zoukankan      html  css  js  c++  java
  • MayBatis与Spring的整合

    1. 步骤

    第一步:导入相关的jar(springmybatis)

         mybatis-spring-*.jar

         spring-jdbc-*.jar

         spring-tx-*.jar

    第二步:spring的配置文件

    a)配置数据源

    b)配置SqlSession工厂

    c)配置SqlSessionTemplate

    第三步:mybatis的配置文件

    第四步:开发Mapper接口

    第五步:Mapper映射文件

    第六步:接口实现类

    第七步:Service层开发

    第八步:注册servicemapperbean

    第九步:测试.

    2. bean配置.

    <bean id="" class="bean的全限定名"/>

    3. 测试的核心类和方法

    ApplicationContext act = new ClasspathXMLApplicationContext("spring配置文件");

    Bean obj =  act.getBean("id");

    4. MapperFactoryBean注入映射器

    <bean id="xx" class="org.mybatis.spring.mapper.MapperFacotyBean">

    <property name="mapperInterface" value="mapper接口名称"/>

    <property name="sqlSessionFactory" ref="sqlSessionFactoryid"/>

    </bean>

    5. MapperScannerConfigurer 注入映射器

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

    <property name="basePackage" value="com.sm.dao"></property>

    </bean>

    注意:会读取整个包下的所有的Mapper接口和Mapper映射文件.

        在注入Mapper,id为接口名的首字母小写.而且它会

        自动注入SqlSessonFactoryBean.

        

    6. 配置事务声明

    第一步:定义事务管理器

    <!-- 配置事务管理器(增强功能) -->

    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <property name="dataSource" ref="dataSource"></property>

    </bean>

    第二步: 建议者

    <!-- 配置不同方法的事物处理功能(建议者)

    <tx:advice id="txAdvice" transaction-manager="txManager">

    <tx:attributes>-->

    <!-- 配置目标方法名 -->

    <tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT" timeout="-1" no-rollback-for="" rollback-for="RuntimeException"/>

    <tx:method name="delete*"/>

    <tx:method name="update*"/>

    <tx:method name="find*" propagation="SUPPORTS"/>

    <tx:method name="*"/>

    <tx:attributes>

    <tx:advice>  

    第三步: 配置切面

    <aop:config>

    <aop:pointcut expression="execution(* com.sm.service..*.*(..))" id="txPointcut"/>

    <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>

    </aop:config>

    7. 事务属性

    propagation:事务传播机制

    REQUIRED:如果存在事务,则支持这个事务,如果不存在事务,就开启一个事务

    REQUIRES_NEW:总会开启一个新事务

    MANDATORY:如果存在事务,则支持这个事务,如果不存在事务,就抛出异常

    NESTED:如果存在事务,会开启一个事务去嵌套,如果不存在事务,与REQUIRED一样

    SUPPORTS:如果存在事务,则支持这个事务,如果不存在事务,就在非事务的环境下运行

    isolation:事务隔离级别

    DEFAULT:默认,使用数据库的默认事务隔离级别

    READ_UNCOMMITTED:未提及读

    READ_COMMITTED:提交读 (脏读)

    REPEATABLE_READ:可重复读(不可重复读问题)

    SERIALIZABLE:串行读(幻影读)

    timeout:多少秒后超时.

    readonly:事务只读

    rollback-for:触发回滚的异常类型

    no-rollback-for:不触发回滚的异常类型

    8. 注解事务

    第一步:开启事务注解,指定事务管理器

    <tx:annotation-driven transaction-manager="txManager"/>

    第二步:配置注解事务

    @Transaction(属性=属性值,属性1=属性值1..)

  • 相关阅读:
    分数拆分
    thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)
    iOS_12_tableViewCell的删除更新_红楼梦
    关于0基础磁盘管理(gpt UEFI...)最好的一篇文章(来自gentoo linux)
    HDU 3564 Another LIS splay(水
    jsp表达式
    XML(四)dom4j解析XML
    Android学习笔记(十八)——使用意图筛选器和实现浏览网页(附源代码)
    Oracle企业管理框架
    em grid control网格控制
  • 原文地址:https://www.cnblogs.com/yang82/p/8086329.html
Copyright © 2011-2022 走看看