zoukankan      html  css  js  c++  java
  • (五)mybatis-spring的集成

    mybatis-spring的集成

      源码下载(数据库使用derby,具体数据库结构参考这里

      在src下新建applicationContext.xml

      配置内容:数据源、SqlSessionFactory、Mapper、事务处理

    一、配置SqlSessionFactory

      需要两个参数:数据源和Mybatis的配置文件路径

      这样SpringIOC容器就会初始化这个SqlSessionFactoryBean,解析Mybatis配置文件连同数据源一同保存在SpringBean里

     1    <!-- 配置数据源 -->
     2     <context:property-placeholder location="classpath:jdbc.properties"/>
     3     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     4         <property name="driverClassName" value="${driver}"/>
     5         <property name="url" value="${url}"/>
     6     </bean>
     7     
     8     <!-- 配置SQLSessionFactory -->
     9     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    10         <property name="dataSource" ref="dataSource"/>  
    11         <property name="configLocation" value="classpath:mybatis-config.xml"/> 
    12     </bean>

      jdbc.properties

    driver=org.apache.derby.jdbc.ClientDriver
    url=jdbc:derby://localhost:1527/E:/my/derby/mydb

      在spring中已经初始化数据源,所以在mybatis配置文件中就无需再进行配置

      mybatis.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE configuration
     3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5   <configuration>
     6       <settings>
     7           <!-- 开启延迟加载 -->
     8           <setting name="lazyLoadingEnabled" value="true"/>
     9           <!-- 每种属性按需加载 -->
    10           <setting name="aggressiveLazyLoading" value="false"/>
    11       </settings>
    12   </configuration>

      有些书中介绍了配置SqlSessionTemplate,当同时设置了SqlSessionFactory和SqlSessionTemplate,系统就会用SqlSessionTemplate覆盖掉SqlSessionFactory,相比较而言,笔者还是喜欢采用Mapper接口的编程方式。

    二、配置mapper(这里采用自动扫描的形式)

      采用MapperScannerConfigurer配置,属性:

        basePackage:指定让Spring自动扫描的包

        annotationClass:表示如果类被这个注解标识的时候才进行扫描

        sqlSessionFactoryBeanName:指定在spring中定义sqlSessionFactory的bean名称。如果被定义,sqlSessionFactory将不起作用

        sqlSessionTemplateBeanName:指定在spring中定义sqlSessionTemplate的bean名称。如果被定义,sqlSessionFactoryBeanName将不起作用

        markerInterface:指定是实现了什么接口就认为它是mapper

     1 <!-- 接口方式 -->
     2     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     3         <property name="basePackage" value="com.example.dao"></property>
     4         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
     5     </bean> 
     6 //在sqlSessionFactory中加载映射文件
     7 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     8         <property name="dataSource" ref="dataSource"/>  
     9         <property name="configLocation" value="classpath:mybatis-config.xml"></property> 
    10         <!-- 加载映射文件 -->
    11         <property name="mapperLocations" value="classpath*:/com/example/mapper/*Mapper.xml"></property>  
    12     </bean>

    三、配置事务

    1    <!--  配置jdbc事务管理器,完成数据的完整性和一致性 -->
    2     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    3         <property name="dataSource" ref="dataSource"></property>
    4     </bean>
    5     <!--  使用声明式事务管理方式     -->
    6     <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

      配置service层

        <!-- 启动spring注解 -->
        <context:annotation-config/>
        <!-- 扫描注解所在的包 -->
        <context:component-scan base-package="com.example"/>

      在service业务层中使用@Transaction注解便可开启事务,事务使用见上篇

    附:别人写的SqlSessionFactoryBean

    -------end-------

  • 相关阅读:
    python 字节数组和十六进制字符串互转
    python 字符串转换成字节的三种方式
    python 将16进制转为字节
    python tcp
    Mac下安装与配置Go语言开发环境
    Remastersys -- 将正在使用的Ubuntu14.04 制作成镜像文件
    Python四大主流网络编程框架
    Python之dict(或对象)与json之间的互相转化
    Python中通过csv的writerow输出的内容有多余的空行
    python写入csv文件的几种方法总结
  • 原文地址:https://www.cnblogs.com/zuzZ/p/8107912.html
Copyright © 2011-2022 走看看