用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(2 配置spring-dao和测试)
用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并测试