用IntelliJ IDEA 開發Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 並測試(1 搭建目錄環境和依賴)
四:在\resources\spring 下面創建一個spring-dao.xml文件 直接用file建立就行
然后在到spring的官方文檔 去把xml的頭部拷過來,我們的這個版本是4.1.7.RELEASE 地址是http://docs.spring.io/spring/docs/4.1.7.RELEASE/spring-framework-reference/pdf/spring-framework-reference.pdf 第五節
4.1 那么其中具體的配置是
配置整合mybatis->配置數據庫的連接池->配置sqlSessionFactory對象->配置掃描DAO接口包 動態實現Dao接口 並且注入到Spring容器中
(一) 配置mybatis 這個時候需要先在resource下面建立jdbc.properties 的文件
driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/peakfortake?useUnicode=true&characterEncoding=UTF-8 username=root password=root
然后mybatis的配置是:
<!-- 配置整合mybatis--> <!-- 配置數據庫--> <!-- <context:property-placeholder location="classpath:jdbc.properties"/>--> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:jdbc.properties</value> </list> </property> </bean>
(二) 配置配置數據庫的連接池
<!--配置數據庫的連接池--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 配置鏈接屬性--> <property name="driverClass" value="${driver}"/> <property name="jdbcUrl" value="${url}"/> <property name="user" value="${username}"/> <property name="password" value="${password}"/> <!--配置c3p0連接池的私有屬性--> <property name="maxPoolSize" value="30"/> <property name="minPoolSize" value="10"/> <!--關閉鏈接后不自動commit--> <property name="autoCommitOnClose" value="false"/> <property name="checkoutTimeout" value="1000"/> <!--獲取連接失敗重試次數--> <property name="acquireRetryAttempts" value="2"/> </bean>
三 配置sqlSessionFactory對象
這個時候需要先在resource下面建立mybatis-config.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> <!-- 使用JDBC 獲取數據庫自增 --> <setting name="useGeneratedKeys" value="true"/> <!-- 使用列別名替換獵魔 默認是true--> <setting name="useColumnLabel" value="true"/> <!--開啟駝峰命名轉換--> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> </configuration>
在配置sqlsessionfactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入數據庫連接池--> <property name="dataSource" ref="dataSource"/> <!-- 配置Mybatisq全局文件:--> <property name="configLocation" value="classpath:mybatis-config.xml"/> <!-- 掃描entity包--> <property name="typeAliasesPackage" value="com.peakfortake.entity"/> <!-- 掃描sql配置文件--> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean>
其中 <property name="dataSource" ref="dataSource"/> 對應的是數據庫的連接池
當mapper中沒有文件的時候 *.xml 會變成紅色 屬於正常情況
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 給出掃描Dao接口包--> <property name="basePackage" value="com.peakfortake.dao"/> </bean>
整個過程中一定要主要掃描包的位置 所以何起來的配置是spring-dao.xml的文件是
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置整合mybatis--> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:jdbc.properties</value> </list> </property> </bean> <!--配置數據庫的連接池--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 配置鏈接屬性--> <property name="driverClass" value="${driver}"/> <property name="jdbcUrl" value="${url}"/> <property name="user" value="${username}"/> <property name="password" value="${password}"/> <!--配置c3p0連接池的私有屬性--> <property name="maxPoolSize" value="30"/> <property name="minPoolSize" value="10"/> <!--關閉鏈接后不自動commit--> <property name="autoCommitOnClose" value="false"/> <property name="checkoutTimeout" value="1000"/> <!--獲取連接失敗重試次數--> <property name="acquireRetryAttempts" value="2"/> </bean> <!-- 配置sqlSessionFactory對象--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入數據庫連接池--> <property name="dataSource" ref="dataSource"/> <!-- 配置Mybatisq全局文件:--> <property name="configLocation" value="classpath:mybatis-config.xml"/> <!-- 掃描entity包--> <property name="typeAliasesPackage" value="com.peakfortake.entity"/> <!-- 掃描sql配置文件--> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <!-- 配置掃描DAO接口包 動態實現Dao接口 並且注入到Spring容器中--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 給出掃描Dao接口包--> <property name="basePackage" value="com.peakfortake.dao"/> </bean> </beans>
這個時候的目錄結構是
五:在entity和dao層中添加方法 在mapper中加入sql語句
我的entity 的實體是:
我的dao層的接口是
我的mapper中的xml是:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.peakfortake.dao.TestUserDao"> <select id="getUser" resultType="TestUser"> SELECT * FROM testuser </select> <insert id="addUser" parameterType="TestUser"> INSERT INTO testuser(username,password) VALUE (#{username},#{password}) </insert> </mapper>
六:測試
編寫測試類
package org.demo.dao; import org.demo.entity.TestUser; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; import java.util.List; /** * 配置Spring 和junit整合 junit啟動時加載springIOC容器 * Created by 草帽boy on 2016/11/28. */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:spring/spring-dao.xml"}) public class TestUserDaoTest { @Resource private TestUserDao testUserDao; @Test public void tt(){ System.out.print( testUserDao.getUser() ); } @Test public void tAdd(){ TestUser t = new TestUser("sdsd","sdsd"); testUserDao.addUser(t); } }
結果:
表示你的Mybatis框架整合成功。。。。
用IntelliJ IDEA 開發Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring並測試