Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)

http://blog.csdn.net/qq598535550/article/details/51703190

二、Spring整合mybatis其实是在mybatis的基础上实现Spring框架

Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)_第1张图片

    1、依赖的jar包,maven引入依赖:

 


            junit
            junit
            4.3
            test
        

        
            log4j
            log4j
            1.2.17
        

        
            org.mybatis
            mybatis
            3.2.2
        

        
            mysql
            mysql-connector-java
            5.1.43
        
        
        
            org.springframework
            spring-beans
            4.2.3.RELEASE
        

        
            org.springframework
            spring-core
            4.2.0.RELEASE
        

        
            org.springframework
            spring-context
            4.2.2.RELEASE
        

        
            org.springframework
            spring-expression
            4.2.2.RELEASE
        

        
        
             org.aspectj
             aspectjweaver
             1.8.7
        

        
        
        
            org.springframework
            spring-jdbc
            4.2.0.RELEASE
        
        
        
            com.alibaba
            druid
            1.0.18
        
        
        
            commons-dbcp
            commons-dbcp
            1.4
        
        
        
            com.mchange
            c3p0
            0.9.5.2
        

        
        
        
            org.mybatis
            mybatis-spring
            1.2.0
        

  简化依赖:webmvc

  Spring整合Myabtis依赖的:

        
        
            org.mybatis
            mybatis-spring
            1.2.0
        

  2、编写核心配置文件(mybatis的许多功能都可以使用Spring来完成)

  mybatis-config.xml的很多功能可以移除

DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">


    
        <package name="cn.tengyu.entity"/>
    
    
        <package name="cn.tengyu.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="cn.tengyu.dao.EmpMapper">
    <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
    
    <select id="count" resultType="int">
        SELECT count(1) AS count FROM emp
    select>
    
    <select id="findAll" resultType="Emp">
        SELECT <include refid="empColumn"/> FROM emp
    select>
    <sql id="empColumn">
        empno,empname,deptno
    sql>
    
    
    
    
    
    <resultMap id="EmpResult" type="Emp">
        <id property="empno" column="empno"/>
        <result property="empname" column="empname"/>
        <association property="dept" javaType="Dept">
            <id property="deptno" column="deptno"/>
            <result property="deptname" column="deptname"/>
        association>
    resultMap>
    <select id="findByIndex" resultMap="EmpResult">
        SELECT e.empno,e.empname,d.deptno,d.deptname FROM emp AS e,dept AS d WHERE e.deptno=d.deptno LIMIT #{startIndex},#{endIndex}
    select>
mapper>
View Code

  applicationContext.xml添加功能,即Spring接管mybatis里面的SqlSessionFactory等Bean的实现

xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">
    
    
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="database.properties"/>
    bean>
    
    
    
    
    
    
    
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    bean>
    
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config2.xml"/>
    bean>
    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.tengyu.dao"/>
    bean>
    
    <bean id="deptService" class="cn.tengyu.service.impl.DeptServiceImpl">
        <property name="dao" ref="deptMapper"/>
    bean>
    
    <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    bean>
    
beans>

    3、service的实现依然使用私有接口属性

Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)_第2张图片

 

   4.数据源可以灵活使用


    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="database.properties"/>
    bean>
    
    
    
    
    
    
    
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    bean>
View Code

  5.mapper的使用很简单


    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config2.xml"/>
    bean>
    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.tengyu.dao"/>
    bean>
    
    <bean id="deptService" class="cn.tengyu.service.impl.DeptServiceImpl">
        <property name="dao" ref="deptMapper"/>
    bean>

  测试:

@Test
    public void findAll(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        IDeptService deptService = (IDeptService) context.getBean("deptService");
        List list = deptService.findAll();
        for (Dept o :list) {
            logger.debug(o.getDeptno()+"\t"+o.getDeptname());
        }

    }

    @Test
    public void Test02(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        IDeptService deptService = (IDeptService) context.getBean("deptService");
        Dept dept = new Dept();
        dept.setDeptname("测试部");
        int i = deptService.addDept(dept);
        logger.debug("执行"+i+"条数据!");
    }

 

注:另外需要灵活使用Spring的AOP进行事务控制

转载于:https://www.cnblogs.com/tengqiuyu/p/7704824.html

你可能感兴趣的:(java,数据库)