Mybatis和spring的整合

来源:互联网 发布:肺活量测量仪器软件 编辑:程序博客网 时间:2024/06/06 05:49

Mybatis和spring的整合

 

一、整合目标

1、  更少的编码

只写接口,不写实现类。

接口能告诉我们:返回的结果集是什么、函数名是什么、参数的类型及个数。

2、  更少的配置

(1)、别名:通常情况下是包名+类名,现在可以取个别名(通常情况下就是类名) ,mybatis帮我们进行包扫描,扫描对应的包,包里面的类放到我们的别名系统中去。

                           

(2)、配置扫描:自动去装配每个SQL XML文件,不需要手动的去配置

<!-- 自动扫描目录下所有SQL映射的xml文件, -->

    <beanid="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

        <propertyname="dataSource" ref="dataSource"/>

        <propertyname="mapperLocations" value="classpath:com/founder/datacenter/dao/mapper/*.xml"/>

</bean>

 

(3)、dao的实现

<!-- 扫描指定包以及子包下的所有映射接口类 -->

    <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">

        <propertyname="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

        <propertyname="basePackage" value="com.founder.datacenter.dao.mapper"/>

    </bean>

 

3、  足够的灵活性

Mybatis的灵活性体现在可以自己定制SQL,自由传递参数,结果集自动赋值。而当spring和mybatis整合之后这些灵活性依然存在,可以用XML提供SQL,DAO接口来实现Mapper映射。

二、mybatis和spring的整合

spring-dao.xml

<!---1:配置数据库相关参数properties的属性:${url}--->

<context:property-placehodlerlocation="classpath:jdbc.property">

<!--2:数据库的连接池-->

<beanid="dateSource"class="com.mchange.v2.c3p0.ComboPooledDataSource">

<!--配置连接池属性-->

<propertyname="driverClass" value="${driver}">

<propertyname="jdbcUrl" value="${url}">

<propertyname="user" value="${username}">

<propertyname="password" value="${password}">

</bean>

<!---c3p0私有属性--->

<propertyname="maxPoolSixe" value="30">

<propertyname="minPoolSixe" value="10">

<propertyname="autoCommitOnClose" value="false">

<propertyname="checkoutTimeout" value="1000">

<!--重试次数--->

<propertyname="acquireRetryAttempts" value="2">

 

<!--大多数情况下默认属性就好了-->

 

<!--3:配置sqlSessionFactory对象--->

<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">

<!--注入数据库连接池-->

<propertyname="dataSource" ref="dataSource"/>

<!--配置Mybatis全局配置文件:mybatis-config.xml-->

<propertyname="configLocation"value="classpath:mybatis-config.xml">

<!--扫描entity包 使用别名 -->

<propertyname"typeAliasesPackage" value="org.seckilll.entity"/>

<!--扫描sql配置文件:mappper需要的xml文件-->

<propertyname="mapperLocation" value="classpath:mapper/*.xml" />

</bean>

 

<!--4:配置扫描Dao接口包,动态实现Dao接口,注入到Spring容器中-->

<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"/>

<!--注入sqlSessionFactory的属性-->

<propertyname="sqlSessionFactoryBeanName" value="sqlSessionFactory">

<!--给出dao接口包的扫描--->

<propertyname="basePackage" value="org.seckill.dao" />

</bean>

 

jdbc.property

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://127.0.0.1:3306/databaseName?useUnicode=true&characterEncoding=utf-8

username=root

password=root