Spring 整合ORM框架

使用mybatis提供的ORM机制,对业务逻辑实现人员来说,面对的是纯粹的Java对象,

<context: property-placeholder location="classpath: jbdc.properties"/>导入properties文件.

配置SqlMapClient

每个mybatis的应用程序都以一个SQLSessionFactory对象的实例为核心,SQLSessionFactory的对象实例可以通过SqlSesssionFactoryBuilder对象来获得,SQLSessionFactoryBuilder可以从XML配置文件或者Configuration类的实例中构建SqlSessionFactory对象.

MySQL拥有多个SQL映射文件,并通过一个配置文件对这些SQL映射文件进行装配,同时在该文件中定义一些控制属性的信息,

1
2
3
4
5
6
7
8
9
10
11
<?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>
<!--sesstings提供mybatis运行时的行为属性-->
<setting name="useGeneratedKeys" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

</configuration>
在Spring中配置Mybatis

可以使用mybatis提供的mybatis-spring整合包实现Spring和Mybatis的整合,从功能上说,mbatis-spring完全符合Spring的风格,要在Spring中整合Mybatis,必须把mybatis-spring构件添加到pom.xml中.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8" ?>
<beans>
<context:component-scan base-package="com.sysu.dao"/>
<context:component-scan base-package="com.sysu.service"/>
<context: property-placeholder location="classpath: jbdc.properties"/>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="${dataSource.url}"></property>
<property name="user" value="${dataSource.username}"></property>
<property name="password" value="${dataSource.password}"></property>
<property name="idleConnectionTestPeriod" value="60" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
<property name="typeAliasesPackage" value="org.Sysu.bean"/>
<!-- 扫描mybatis核心配置文件 -->
<property name="configLocation" value="classpath:mybatis.xml"/>
</bean>

</beans>

mybatis-spring提供了一个sqlsessionFactoryBean,以便通过Spring风格创建mybatis的SqlsessionFactory,像上面配置文件的最后一个bean.mapperLoactions 属性快速扫描sql映射文件.

使用映射接口

mybatis提供了一种可将sql映射文件中的映射项通过名称匹配接口进行调用的方法,接口名称和映射命名空间相同,接口方法和映射元素的id相同.

定义好DAO接口后,如何通过该接口进行数据访问呢,mybatis-spring提供了转换器MapperScannerConfigurer,将映射接口直接变为spring容器中的bean,

1
2
3
4
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="org.Sysu.Dao"/>
</bean>