MyBatis-Spring集成的理解

首先我本身简单介绍一下mybatisspring

mybatis是在配置中写SQL,用对象映射
mybatis看作是是数据持久层的框架,它主要是对数据库和对象的关系进行操做sql

再说下:
mybatis和hibernate的最大区别在于,本身写SQL,而hibernate自动映射SQL,mybatis更加灵活,更适用于二次开发,若是要涉及较多的数据库结构的修改的话,hibernate更加有优点些数据库

如今开始集成MyBatis-Springmybatis

(1)要使用MyBatis-Spring的模块的,首先要下载mybatis-spring.jar包,导入Mybatis相关的包。而且在Maven中pom.xml加入加入依赖关系
(2)在spring框架的应用上下文配置文件applicationContext.xml中定义SqlSessionFactory和至少一个数据映射类


以下在MyBatis-Spring中,SqlSessionFactorBean 用于建立SqlSessionFactory
这是个人项目配置:


 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
        <!-- mapper和resultmap配置路径 -->
        <property name="mapperLocations">
            <list>
               
                <value>classpath:com/xmoney/**/*-oracle-mapper.xml</value>
            </list>
        </property>
    </bean>


其中数据源dataSource能够是任何的数据库,属性configLocation用来指定Mybatis的XML文件配置的路径
属性mapperLocations中list用来指定mybatis的XML的映射文件,好比项目中每一个模块的xml(用来操做数据库的Sql语句)
(3)MyBatis的自动配置

没有必要为Spring的全部的XML文件注册全部的映射器,能够使用MapperScannerConfigurer,它将查找类路径下的映射器,而且将他们自动建立成MapperFactoryBeans


这是在applicationContext.xml中的配置:

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xmoney"/>
        <property name="markerInterface" value="com.xmoney.manage.entity.Mapper"/>
    </bean>
其中属性basePackage会让接口文件映射问基本包路径


这里要注意一点:若是你使用了一个以上的DataSource,也就是多个SqlSessionFactory,那么自动装配就会不起做用
此时能够将sqlSessionFactory换成sqlSessionFactoryBeanName或者sqlSessionTemplateBeanName


属性markerInterface指定要寻找的父接口


其中MyBatis的配置XML 以下


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">


<configuration>
<settings>
<!-- changes from the defaults -->
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<typeAliases>
   <typeAlias alias="Hnyhb" type="com.xmoney.manage.entity.Hnyhb" />
   <typeAlias alias="Page" type="com.xmoney.manage.entity.Page" />
</typeAliases>


</configuration>


这里有两个配置,一个是LazyLoadingEnable,设为false,让Mybatis禁止Lazy加载
在TypeAliases,这是一个别名,之因此要别名,是为了在Mapper映射的时候方便使用


以上是我对Mybatis和spring集成的配置,以及和hibernate与spring集成的比较oracle

后续有不少开发填坑的文章发布,若是对你有帮助,请支持和加关注一下app

http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944框架

https://shop119727980.taobao.com/?spm=0.0.0.0 spa

相关文章
相关标签/搜索