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..)

  • 相关阅读:
    九度 1172:哈夫曼树
    mac os 错误提示:下载失败 使用已购页面再试一次 解决方法
    WCF学习资料汇总
    豆瓣FM 歌词跟随插件
    大型网站架构和高并发的一些想法
    MAC OS 系统使用心得
    Windows 7 安装.net framework 4.0 失败,错误HRESULT 0xc8000222解决办法
    json官方学习档案
    转:查看sql语句执行时间/测试sql语句性能
    从数据库反向生成django的models
  • 原文地址:https://www.cnblogs.com/yang82/p/8086329.html
Copyright © 2011-2022 走看看