Mybatis-spring 动态代理
1、UserMapper.java
- package com.cn.mapper;
- import java.util.List;
- import com.cn.pojo.User;
- public interface UserMapper {
- List<User> getUserOrderMap();
- }
2、UserMapper.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.cn.mapper.UserMapper">
- <resultMap type="user" id="user_order_map">
- <id property="id" column="id"/>
- <result property="username" column="username"/>
- <result property="address" column="address"/>
- <result property="birthday" column="birthday"/>
- <result property="sex" column="sex"/>
- <!-- collection用于配置一对多关联 -->
- <collection property="orderList" ofType="order">
- <id property="id" column="oid"/>
- <result property="userId" column="id"/>
- <result property="number" column="number"/>
- <result property="createtime" column="createtime"/>
- <result property="note" column="note"/>
- </collection>
- </resultMap>
- <select id="getUserOrderMap" resultMap="user_order_map">
- select
- u.id,
- u.username,
- u.birthday,
- u.sex,
- u.address,
- u.uuid2,
- o.id oid,
- o.number,
- o.createtime,
- o.note
- from
- user u
- left join
- order1 o
- on o.user_id = u.id
- </select>
- </mapper>
3、applicationContext.xml
两种配置方式
单独配
- <!-- 动态代理 配置方法1-->
- <!-- <bean id="baseMapper" class="org.mybatis.spring.mapper.MapperFactoryBean" abstract="true" lazy-init="true">
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
- </bean> -->
- <!-- 配置一个接口 -->
- <!-- <bean id="oneMapper" parent="baseMapper">
- <property name="mapperInterface" value="com.cn.mapper.UserMapper" />
- </bean> -->
包扫描
- <!-- 包扫描-->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.cn.mapper"></property>
- </bean>
- <?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">
- <!-- 加载配置文件 -->
- <context:property-placeholder location="classpath:jdbc.properties" />
- <!-- 数据库连接池 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="${jdbc.driver}" />
- <property name="url" value="${jdbc.url}" />
- <property name="username" value="${jdbc.username}" />
- <property name="password" value="${jdbc.password}" />
- <!-- 连接池的最大数据库连接数 -->
- <property name="maxActive" value="10" />
- <!-- 最大空闲数 -->
- <property name="maxIdle" value="5" />
- </bean>
- <!-- SqlSessionFactoryBean 配置-->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <!-- 注入数据源 -->
- <property name="dataSource" ref="dataSource" />
- <!-- 加载 mybatis核心文件sqlMapperConfig配置文件-->
- <property name="configLocation" value="classpath:sqlMapperConfig.xml" />
- <!-- 别名包扫描-->
- <property name="typeAliasesPackage" value="com.cn.pojo"/>
- </bean>
- <!-- 传统dao开发 -->
- <bean class="com.cn.dao.impl.UserDaoImpl">
- <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
- </bean>
- <!-- 动态代理 配置方法1-->
- <!-- <bean id="baseMapper" class="org.mybatis.spring.mapper.MapperFactoryBean" abstract="true" lazy-init="true">
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
- </bean> -->
- <!-- 配置一个接口 -->
- <!-- <bean id="oneMapper" parent="baseMapper">
- <property name="mapperInterface" value="com.cn.mapper.UserMapper" />
- </bean> -->
- <!-- 包扫描-->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.cn.mapper"></property>
- </bean>
- </beans>
测试
- package com.cn.mapper;
- import static org.junit.Assert.*;
- import java.util.List;
- import org.junit.Before;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import com.cn.dao.UserDao;
- import com.cn.pojo.User;
- public class UserMapperTest {
- private ApplicationContext applicationContext;
- @Before
- public void init() {
- applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
- }
- @Test
- public void test() {
- System.out.println(1);
- UserMapper mapper = applicationContext.getBean(UserMapper.class);
- List<User> userOrderMap = mapper.getUserOrderMap();
- System.out.println(userOrderMap);
- }
- }
Mybatis-spring 动态代理的更多相关文章
- MyBatis学习(三)MyBatis基于动态代理方式的增删改查
1.前言 上一期讲到MyBatis-Statement版本的增删改查.可以发现.这种代码写下来冗余的地方特别多.写一套没啥.如果涉及到多表多查询的时候就容易出现问题.故.官方推荐了一种方法.即MyBa ...
- (十二)mybatis之动态代理
mybatis之动态代理的应用 在前文(https://www.cnblogs.com/NYfor2018/p/9093472.html)我们知道了,Mybatis的使用需要用到Mapper映射文件, ...
- Mybatis mapper动态代理的原理详解
在开始动态代理的原理讲解以前,我们先看一下集成mybatis以后dao层不使用动态代理以及使用动态代理的两种实现方式,通过对比我们自己实现dao层接口以及mybatis动态代理可以更加直观的展现出my ...
- JAVA框架 Spring 和Mybatis整合(动态代理)
一.使用传统方式的dao的书写方式,不建议.目前采用的是动态代理的方式交给mybatis进行处理. 首先回顾下动态代理要求: 1)子配置文件的中,namespace需要是接口的全路径,id是接口的方法 ...
- spring如何管理mybatis(一) ----- 动态代理接口
问题来源 最近在集成spring和mybatis时遇到了很多问题,从网上查了也解决了,但是就是心里有点别扭,想看看到底怎么回事,所以跟了下源码,终于发现了其中的奥妙. 问题分析 首先我们来看看基本的配 ...
- Spring 整合Mybatis Mapper动态代理方法
先看项目目录结构 很清爽了 最重要的Spring的核心配置文件,看一下 <?xml version="1.0" encoding="UTF-8"?> ...
- 【转载】由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理
转自:http://zhangbo-peipei-163-com.iteye.com/blog/2033832?utm_source=tuicool&utm_medium=referral 我 ...
- spring 动态代理
突然想到AOP,就简单回忆一下动态代理.1.什么是动态代理? 假如有个用户有增删该查4个方法,如果要对用户操作后进行日志记录,可能会有人说直接在增删改查后做日志记录就行. 一旦我想在用户操作之前加一个 ...
- Mybatis使用动态代理实现拦截器功能
1.背景介绍 拦截器顾名思义为拦截某个功能的一个武器,在众多框架中均有“拦截器”.这个Plugin有什么用呢?或者说拦截器有什么用呢?可以想想拦截器是怎么实现的.Plugin用到了Java中很重要的一 ...
- Java的三种代理模式(Spring动态代理对象)
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
随机推荐
- 使用json改写网站
效果图 json文件 https://raw.githubusercontent.com/sherryloslrs/timetable/master/timetable.json { "Ti ...
- python基础之centos6.5 升级 python2.7, 安装pip, MySQLdb
这个仅仅是为了运行脚本需求, 将centos6.5中的 python 2.6.6升级到了 2.7 并且安装和了 pip 和 MySQLdb 1.先装依赖 yum install zlib-devel ...
- 51单片机小项目电路TwoLed电路图
1.复位电路没有开关,不可控 在电容旁边并联一个开关和10k的电阻支路 2.晶振电路引用的外部晶振, 理论上XTAL2悬空,XTAL1接外部震荡信号 //ProjeceName:TwoLed //wr ...
- springBoot的数据库操作
一:操作数据库起步 1.Spring-Data-Jpa JPA定义了对象持久化的标准. 目前实现了有Hibernate,TopLink 2.pom添加依赖 <dependency> < ...
- acrgis导出成tiff图片,全是黑色
任务:将北京道路矢量数据转成栅格然后导出成tiff格式图片. 1. 北京道路有很多种,矢量合并---用到了merge工具 arcgis位置:data management----general---- ...
- Codeforces1062D. Fun with Integers(埃氏筛)
题目链接:传送门 题目: D. Fun with Integers time limit per test seconds memory limit per test megabytes input ...
- Idea 2017.3以后版本的破解
自从升级到idea2017.3之后,之前的license server破解方法貌似已失效.于是找到大神用的破解插件,很好很强大. 安装好idea之后不要打开软件,从http://idea.lanyus ...
- oracle database 11g 如何正确卸载
如在使用过程中,遇到oracle database 的疑难问题,需要重装的时候,就需要我们先将老的oracle 做完全的卸载删除,这样才能安装新的oracle database. 下面看一下具体的卸载 ...
- K2路由器刷机教程
http://blog.sina.com.cn/s/blog_dc642faa0102x1on.html 方法:先降价——刷入breed——刷入固件 1.K2路由固件版本为V22.4.5.39 / V ...
- session token两种登陆方式
Session 和 Token 其实Session和Token总体上还是很相似的,但是也有以下区别: 1. 过期时间:Session的过期时间存在cookie的Max-age字段,Token的过期时间 ...