首先我自己简单介绍一下mybatis
mybatis是在配置中写SQL,用对象映射
mybatis看做是是数据持久层的框架,它主要是对数据库和对象的关系进行操作再说下:
mybatis和hibernate的最大区别在于,自己写SQL,而hibernate自动映射SQL,mybatis更加灵活,更适用于二次开发,如果要涉及较多的数据库结构的修改的话,hibernate更加有优势些现在开始集成MyBatis-Spring
(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集成的比较后续有很多开发填坑的文章发布,如果对你有帮助,请支持和加关注一下