一、概述
使用接口代理开发,可以不用写接口的实现类,而采用的是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); } }