zoukankan      html  css  js  c++  java
  • myBatis---接口代理开发(demo)

    一、概述

        使用接口代理开发,可以不用写接口的实现类,而采用的是MapperFactoryBean代理的实现类。

         * 接口代理方式开发,遵循四大原则
         * 1.方法名 == mapper.xml的id名
         * 2.返回值类型 == mapper.xml文件的resultType,或resultMap
         * 3.形参 == mapper.xml的入参 parameterType
         * 4.接口名 == mapper.xml的namespace

    二、文件概况

    三、代码

      1.applicationContext.xml

      

    <?xml version="1.0" encoding="UTF-8"?>
    <beans 
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        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-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    
    
    
    <!-- 数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
        <property name="username" value="scott"/>
        <property name="password" value="orcl"/>
    </bean>
    
    <!-- sqlSessionFactoryBean工厂 -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="sqlMapConfig.xml"/>
    </bean>
    
    <!-- DeptDao接口的代理类 -->
    <bean id="deptDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="com.cissst.it.dept.dao.DeptDao"></property>
        <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
    </bean>
    
    <!-- EmpDao接口的代理类 -->
    <bean id="empDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="com.cissst.it.emp.dao.EmpDao"></property>
        <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
    </bean>
    
    </beans>

      2.sqlMapConfig.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>
    
    <typeAliases>
        <typeAlias type="com.cissst.it.emp.entity.Emp" alias="Emp"/>
    </typeAliases>
    <mappers>
        <mapper resource="com/cissst/it/dept/dao/DeptDao.xml"/>
        <mapper resource="com/cissst/it/emp/dao/EmpDao.xml"/>
    </mappers>
    </configuration>

      3.接口.java

    package com.cissst.it.emp.dao;
    
    import java.util.List;
    
    import com.cissst.it.emp.entity.Emp;
    
    public interface EmpDao {
    
        public List<Emp> findEmpByDeptno(Integer deptno);
    }

      4.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.cissst.it.emp.dao.EmpDao">
        <select id="findEmpByDeptno" parameterType="Integer" resultType="Map">
            select * from Emp where deptno = #{id}
        </select>
    </mapper>

      5.测试类

    package com.cissst.it.test;
    
    import java.util.List;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.cissst.it.dept.dao.DeptDao;
    import com.cissst.it.dept.entity.Dept;
    import com.cissst.it.emp.dao.EmpDao;
    import com.cissst.it.emp.entity.Emp;
    public class Main {
        @SuppressWarnings("resource")
        public static void main(String[] args) {
            
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            //查找10号部门信息
            DeptDao obj1 = (DeptDao) context.getBean("deptDao");
            Dept dept = obj1.findByDeptno(10);
            System.out.println(dept);
            
            
            //查询部门为10号的所有员工信息
            EmpDao obj2 = (EmpDao) context.getBean("empDao");
            List<Emp> list = obj2.findEmpByDeptno(10);
            System.out.println(list);
        }
    }
    Best Regards
  • 相关阅读:
    【学习笔记/题解】树上启发式合并/CF600E Lomsat gelral
    【学习笔记/题解】虚树/[SDOI2011]消耗战
    【题解】 [GZOI2017]小z玩游戏
    【题解】CF1426E Rock, Paper, Scissors
    【题解】CF1426D Non-zero Segments
    【题解】NOIP2018 填数游戏
    【题解】NOIP2018 旅行
    【题解】NOIP2018 赛道修建
    【题解】时间复杂度
    【题解】「MCOI-02」Convex Hull 凸包
  • 原文地址:https://www.cnblogs.com/pecool/p/9693378.html
Copyright © 2011-2022 走看看