1、UserMapper.java

  1. package com.cn.mapper;
  2.  
  3. import java.util.List;
  4.  
  5. import com.cn.pojo.User;
  6.  
  7. public interface UserMapper {
  8. List<User> getUserOrderMap();
  9. }

2、UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <mapper namespace="com.cn.mapper.UserMapper">
  7. <resultMap type="user" id="user_order_map">
  8. <id property="id" column="id"/>
  9. <result property="username" column="username"/>
  10. <result property="address" column="address"/>
  11. <result property="birthday" column="birthday"/>
  12. <result property="sex" column="sex"/>
  13. <!-- collection用于配置一对多关联 -->
  14. <collection property="orderList" ofType="order">
  15. <id property="id" column="oid"/>
  16. <result property="userId" column="id"/>
  17. <result property="number" column="number"/>
  18. <result property="createtime" column="createtime"/>
  19. <result property="note" column="note"/>
  20. </collection>
  21. </resultMap>
  22. <select id="getUserOrderMap" resultMap="user_order_map">
  23. select
  24. u.id,
  25. u.username,
  26. u.birthday,
  27. u.sex,
  28. u.address,
  29. u.uuid2,
  30. o.id oid,
  31. o.number,
  32. o.createtime,
  33. o.note
  34. from
  35. user u
  36. left join
  37. order1 o
  38. on o.user_id = u.id
  39.  
  40. </select>
  41. </mapper>

3、applicationContext.xml

两种配置方式

单独配

  1. <!-- 动态代理 配置方法1-->
  2. <!-- <bean id="baseMapper" class="org.mybatis.spring.mapper.MapperFactoryBean" abstract="true" lazy-init="true">
  3. <property name="sqlSessionFactory" ref="sqlSessionFactory" />
  4. </bean> -->
  5. <!-- 配置一个接口 -->
  6. <!-- <bean id="oneMapper" parent="baseMapper">
  7. <property name="mapperInterface" value="com.cn.mapper.UserMapper" />
  8. </bean> -->

包扫描

  1. <!-- 包扫描-->
  2. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  3. <property name="basePackage" value="com.cn.mapper"></property>
  4. </bean>
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  8. 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
  9. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
  10.  
  11. <!-- 加载配置文件 -->
  12. <context:property-placeholder location="classpath:jdbc.properties" />
  13.  
  14. <!-- 数据库连接池 -->
  15. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  16. destroy-method="close">
  17. <property name="driverClassName" value="${jdbc.driver}" />
  18. <property name="url" value="${jdbc.url}" />
  19. <property name="username" value="${jdbc.username}" />
  20. <property name="password" value="${jdbc.password}" />
  21. <!-- 连接池的最大数据库连接数 -->
  22. <property name="maxActive" value="10" />
  23. <!-- 最大空闲数 -->
  24. <property name="maxIdle" value="5" />
  25. </bean>
  26. <!-- SqlSessionFactoryBean 配置-->
  27. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  28. <!-- 注入数据源 -->
  29. <property name="dataSource" ref="dataSource" />
  30. <!-- 加载 mybatis核心文件sqlMapperConfig配置文件-->
  31. <property name="configLocation" value="classpath:sqlMapperConfig.xml" />
  32. <!-- 别名包扫描-->
  33. <property name="typeAliasesPackage" value="com.cn.pojo"/>
  34. </bean>
  35. <!-- 传统dao开发 -->
  36. <bean class="com.cn.dao.impl.UserDaoImpl">
  37. <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
  38. </bean>
  39. <!-- 动态代理 配置方法1-->
  40. <!-- <bean id="baseMapper" class="org.mybatis.spring.mapper.MapperFactoryBean" abstract="true" lazy-init="true">
  41. <property name="sqlSessionFactory" ref="sqlSessionFactory" />
  42. </bean> -->
  43. <!-- 配置一个接口 -->
  44. <!-- <bean id="oneMapper" parent="baseMapper">
  45. <property name="mapperInterface" value="com.cn.mapper.UserMapper" />
  46. </bean> -->
  47. <!-- 包扫描-->
  48. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  49. <property name="basePackage" value="com.cn.mapper"></property>
  50. </bean>
  51. </beans>

测试

  1. package com.cn.mapper;
  2.  
  3. import static org.junit.Assert.*;
  4.  
  5. import java.util.List;
  6.  
  7. import org.junit.Before;
  8. import org.junit.Test;
  9. import org.springframework.context.ApplicationContext;
  10. import org.springframework.context.support.ClassPathXmlApplicationContext;
  11.  
  12. import com.cn.dao.UserDao;
  13. import com.cn.pojo.User;
  14.  
  15. public class UserMapperTest {
  16.  
  17. private ApplicationContext applicationContext;
  18.  
  19. @Before
  20. public void init() {
  21. applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
  22. }
  23. @Test
  24. public void test() {
  25. System.out.println(1);
  26. UserMapper mapper = applicationContext.getBean(UserMapper.class);
  27. List<User> userOrderMap = mapper.getUserOrderMap();
  28. System.out.println(userOrderMap);
  29. }
  30. }

Mybatis-spring 动态代理的更多相关文章

  1. MyBatis学习(三)MyBatis基于动态代理方式的增删改查

    1.前言 上一期讲到MyBatis-Statement版本的增删改查.可以发现.这种代码写下来冗余的地方特别多.写一套没啥.如果涉及到多表多查询的时候就容易出现问题.故.官方推荐了一种方法.即MyBa ...

  2. (十二)mybatis之动态代理

    mybatis之动态代理的应用 在前文(https://www.cnblogs.com/NYfor2018/p/9093472.html)我们知道了,Mybatis的使用需要用到Mapper映射文件, ...

  3. Mybatis mapper动态代理的原理详解

    在开始动态代理的原理讲解以前,我们先看一下集成mybatis以后dao层不使用动态代理以及使用动态代理的两种实现方式,通过对比我们自己实现dao层接口以及mybatis动态代理可以更加直观的展现出my ...

  4. JAVA框架 Spring 和Mybatis整合(动态代理)

    一.使用传统方式的dao的书写方式,不建议.目前采用的是动态代理的方式交给mybatis进行处理. 首先回顾下动态代理要求: 1)子配置文件的中,namespace需要是接口的全路径,id是接口的方法 ...

  5. spring如何管理mybatis(一) ----- 动态代理接口

    问题来源 最近在集成spring和mybatis时遇到了很多问题,从网上查了也解决了,但是就是心里有点别扭,想看看到底怎么回事,所以跟了下源码,终于发现了其中的奥妙. 问题分析 首先我们来看看基本的配 ...

  6. Spring 整合Mybatis Mapper动态代理方法

    先看项目目录结构 很清爽了 最重要的Spring的核心配置文件,看一下 <?xml version="1.0" encoding="UTF-8"?> ...

  7. 【转载】由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理

    转自:http://zhangbo-peipei-163-com.iteye.com/blog/2033832?utm_source=tuicool&utm_medium=referral 我 ...

  8. spring 动态代理

    突然想到AOP,就简单回忆一下动态代理.1.什么是动态代理? 假如有个用户有增删该查4个方法,如果要对用户操作后进行日志记录,可能会有人说直接在增删改查后做日志记录就行. 一旦我想在用户操作之前加一个 ...

  9. Mybatis使用动态代理实现拦截器功能

    1.背景介绍 拦截器顾名思义为拦截某个功能的一个武器,在众多框架中均有“拦截器”.这个Plugin有什么用呢?或者说拦截器有什么用呢?可以想想拦截器是怎么实现的.Plugin用到了Java中很重要的一 ...

  10. Java的三种代理模式(Spring动态代理对象)

    Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...

随机推荐

  1. 使用json改写网站

    效果图 json文件 https://raw.githubusercontent.com/sherryloslrs/timetable/master/timetable.json { "Ti ...

  2. python基础之centos6.5 升级 python2.7, 安装pip, MySQLdb

    这个仅仅是为了运行脚本需求, 将centos6.5中的 python 2.6.6升级到了 2.7 并且安装和了 pip 和 MySQLdb 1.先装依赖 yum install zlib-devel ...

  3. 51单片机小项目电路TwoLed电路图

    1.复位电路没有开关,不可控 在电容旁边并联一个开关和10k的电阻支路 2.晶振电路引用的外部晶振, 理论上XTAL2悬空,XTAL1接外部震荡信号 //ProjeceName:TwoLed //wr ...

  4. springBoot的数据库操作

    一:操作数据库起步 1.Spring-Data-Jpa JPA定义了对象持久化的标准. 目前实现了有Hibernate,TopLink 2.pom添加依赖 <dependency> < ...

  5. acrgis导出成tiff图片,全是黑色

    任务:将北京道路矢量数据转成栅格然后导出成tiff格式图片. 1. 北京道路有很多种,矢量合并---用到了merge工具 arcgis位置:data management----general---- ...

  6. Codeforces1062D. Fun with Integers(埃氏筛)

    题目链接:传送门 题目: D. Fun with Integers time limit per test seconds memory limit per test megabytes input ...

  7. Idea 2017.3以后版本的破解

    自从升级到idea2017.3之后,之前的license server破解方法貌似已失效.于是找到大神用的破解插件,很好很强大. 安装好idea之后不要打开软件,从http://idea.lanyus ...

  8. oracle database 11g 如何正确卸载

    如在使用过程中,遇到oracle database 的疑难问题,需要重装的时候,就需要我们先将老的oracle 做完全的卸载删除,这样才能安装新的oracle database. 下面看一下具体的卸载 ...

  9. K2路由器刷机教程

    http://blog.sina.com.cn/s/blog_dc642faa0102x1on.html 方法:先降价——刷入breed——刷入固件 1.K2路由固件版本为V22.4.5.39 / V ...

  10. session token两种登陆方式

    Session 和 Token 其实Session和Token总体上还是很相似的,但是也有以下区别: 1. 过期时间:Session的过期时间存在cookie的Max-age字段,Token的过期时间 ...