用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并测试

posted @ 2016-11-28 16:49  草帽boy  阅读(1970)  评论(2编辑  收藏  举报