Mybatis和spring的整合
一、整合目標
1、 更少的編碼
只寫接口,不寫實現類。
接口能告訴我們:返回的結果集是什麼、函數名是什麼、參數的類型及個數。
2、 更少的配置
(1)、別名:通常情況下是包名+類名,現在可以取個別名(通常情況下就是類名) ,mybatis幫我們進行包掃描,掃描對應的包,包裏面的類放到我們的別名系統中去。
(2)、配置掃描:自動去裝配每個SQL XML文件,不需要手動的去配置
<!-- 自動掃描目錄下所有SQL映射的xml文件, -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:com/founder/datacenter/dao/mapper/*.xml"/>
</bean>
(3)、dao的實現
<!-- 掃描指定包以及子包下的所有映射接口類 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="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