1、在xml中定义MyBatis的配置文件,包括一些属性信息。
xmlversion="1.0"encoding="UTF-8"?>
DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings> (1)
<settingname="mapUnderscoreToCamelCase"value="true"/>
settings>
configuration>
在(1)处提供可控制myBatis框架运行行为的属性信息。
2、在Spring配置文件整合mybatis
要在Spring中整合mybatis,第一项工作必须将mybatis-spring类包添加到项目的类库中。
2、1配置SqlSessionFactoryBean
<beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"
p:driverClassName="oracle.jdbc.driver.OracleDriver"
p:url="jdbc:oracle:thin:@localhost:1521:orcl"
p:username="system"
p:password="111111"/>
<beanid="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean"> (1)
<propertyname="dataSource"ref="dataSource"/> (2)
<propertyname="configLocation"value="classpath:mybatis-config.xml" />(3)
<propertyname="mapperLocations"
value="classpath*:com/forms/**/*.xml"/> (4)
bean>
1、 mybatis-spring类包提供一个SqlSessionFactoryBean,以便通过Spring风格创建myBatis的SqlSessionFactory,如(1)所示。
2、 注入数据源如(2)所示。
3、 指定mybatis的总装配置文件(类路径下的mybatis-config.xml文件),如(3)所示。
4、 通过mapperLocations属性,设置扫描式加载SQL映射文件。如(4)所示。
注意:
(1) 如果没有设置这个属性,Dao接口的命名与映射文件的命名要完全相同,才能找到对应的映射项。(所以在spring中配置mybatis时,最好加上这个mapperLocations属性。)
(2) 如果要指定扫描多个不同风格的SQL映射文件。可以采用如下方式:
2、2配置MapperScannerConfigurer
mybatis-spring提供了一个转换器MapperScannerConfigurer,它可以将映射接口直接转换为Spring容器中的Bean,这样我们就可以在Service注入映射接口的Bean了。
<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
<propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"/>
bean>
MapperScannerConfigurer将扫描basePackage所指定的包下的所有接口类(包括子包),如果它们在SQL映射文件中定义过,则将它们动态定义一个Spring Bean。在Service层就可以直接使用@Autowired注入
这些映射接口的bean。
3、编写DAO文件
packagecom.forms.common.dao;
importorg.apache.ibatis.annotations.Param;
importorg.springframework.stereotype.Repository;
import com.forms.common.domain.User;
@Repository
publicinterface UserDao {
publicint getMatchCount(
@Param("userName") String userName,
@Param("password") String password) ;
}
4、编写xml文件
xmlversion="1.0"encoding="UTF-8"?>
DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="com.forms.common.dao.UserDao"> (1)
<selectid="getMatchCount"resultType="Integer"> (2)
SELECT count(*) FROMt_user U
<where>
<iftest="null !=userName and '' != userName">
AND U.user_name like #{userName, jdbcType=VARCHAR}
if>
<iftest="null !=password and '' != password">
AND U.password =#{password, jdbcType=VARCHAR}
if>
where>
select>
mapper>
在(1)处指定了映射所在的命名空间。(注意:命名空间的字符串(例如:namespace="com.forms.common.dao.UserDao")中不能出现空格,要不然程序会报找不到对应的映射项错误),每个具体的映射项都有一个id,可以通过命名空间和映射项的id定位到具体的映射项。
映射项的parameterType指定传入的参数对象,可以是全限定名的类,也可以是类的别名,类别名在mybatis的主配置文件中定义。(其实实际项目中,不是必须配置别名)。如果映射项的入参是基础类型或String类型,则可以使用如int、long、String的基础类型名。映射项中通过#{xxx}绑定parameterType指定参数类的属性,支持级联属性,如#{topic.forumId}。