目录结构及配置文件与原始dao方法相比更简便

只需一个UserMapper的接口,放在一起的配置文件,配置文件中namespace的地址确定jdk动态代理的对象

<?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">
<!-- namespace:命名空间,用于隔离sql -->
<!-- 使用动态代理开发DAO,1. namespace必须和Mapper接口类路径一致 -->
<mapper namespace="com.swift.dao.UserMapper">
<!-- 根据用户id查询用户 -->
<!-- 2. id必须和Mapper接口方法名一致 -->
<!-- 3. parameterType必须和接口方法参数类型一致 -->
<!-- 4. resultType必须和接口方法返回值类型一致 -->
<select id="queryUserByUsername" parameterType="String"
resultType="com.swift.pojo.User">
select * from user where username = #{username}
</select>
</mapper>

Mybatis配置文件的映射部分更加简便

<?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>
<properties resource="db.properties"></properties> <environments default="development">
<!-- 开发用数据源 -->
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments> <!-- 加载sql映射文件 -->
<mappers>
<!-- 当把sql映射文件移到和接口文件(jdk代理的方式,无需实现类了)一个包下使用相同文件名(接口改名叫UserMapper.java不叫UserDao了),就可以使用class属性替换resource属性 -->
<!-- <mapper resource="mapper/UserMapper.xml" /> -->
<!-- <mapper class="com.swift.dao.UserMapper"/> -->
<!-- 如果有很多相同名字的接口和映射都放在这个包中,那给个包名就可以加载映射了 -->
<package name="com.swift.dao"/>
</mappers>
</configuration>

上边的配置文件和映射文件与以往的ssh框架类似

但还要搞懂Alias 别名

如果没留心这个,往往会让你晕晕的感觉,不明白谁是谁了,但一旦注意了,还是觉得蛮方便的

可以单个定义别名
<typeAlias alias="user" type="com.swift.pojo.User" />

就像给人其了小名,小名其实还是他,以后叫小名就行了

还可以用包批量定义别名

<package name="com.swift.dao" />
<package name="com.swift.pojo" />

那么这些包下的接口或类就都可以使用小名了(就是类名可以小写了,或者无所谓大小写)

但注意不要动 动态代理的那个类名,出BuilderException,造不出代理对象

新的配置文件

<?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>
<properties resource="db.properties"></properties> <typeAliases>
<!-- 单个别名定义 -->
<!-- <typeAlias alias="user" type="com.swift.pojo.User" /> -->
<!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->
<package name="com.swift.dao" />
<package name="com.swift.pojo" />
</typeAliases> <environments default="development">
<!-- 开发用数据源 -->
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments> <!-- 加载sql映射文件 -->
<mappers>
<!-- 当把sql映射文件移到和接口文件(jdk代理的方式,无需实现类了)一个包下使用相同文件名(接口改名叫UserMapper.java不叫UserDao了),就可以使用class属性替换resource属性 -->
<!-- <mapper resource="mapper/UserMapper.xml" /> -->
<!-- <mapper class="com.swift.dao.UserMapper"/> -->
<!-- 如果有很多相同名字的接口和映射都放在这个包中,那给个包名就可以加载映射了 -->
<package name="com.swift.dao"/>
</mappers>
</configuration>

配置文件属性的位置是固定的,因为约束,不能变动

映射文件如下:

不知道一定会懵的

Mybatis Mapper动态代理方式 typeAliases 别名的使用的更多相关文章

  1. Mybatis框架基础入门(三)--Mapper动态代理方式开发

    使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题: Dao方 ...

  2. Mybatis入门——基础方式的增删该查、mapper动态代理方式的CRUD、类型转换器

    一.基础方式的增删该查: 1.mybatis约定:输入参数parameterType和输出参数resulrType在形式上只能有一个. 2.如果输入/输出参数:是简单类型(8个基本类型加String) ...

  3. MyBatis开发Dao层的两种方式(Mapper动态代理方式)

    MyBatis开发原始Dao层请阅读我的上一篇博客:MyBatis开发Dao层的两种方式(原始Dao层开发) 接上一篇博客继续介绍MyBatis开发Dao层的第二种方式:Mapper动态代理方式 Ma ...

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

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

  5. Mybatis之旅第二篇-Mapper动态代理方式

    一.引言 通过上一篇mybatis的入门学习,我们已经会使用mybatis实现简单的增删改查,但是我们也发现了用原始Dao开发的一些问题: Dao方法体存在重复代码:通过SqlSessionFacto ...

  6. 02.MyBatis在DAO层开发使用的Mapper动态代理方式

    在实际开发中,Mybatis作用于DAO层,那么Service层该如何调用Mybatis Mybatis鼓励使用Mapper动态代理的方式 Mapper接口开发方法只需要程序员编写Mapper接口(相 ...

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

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

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

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

  9. MyBatis - Mapper动态代理开发

    Mapper接口开发方法编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象. Mapper接口开发方式是基于入门程序的基础上,对 控制程序 进行分层开发, ...

随机推荐

  1. 关于圆角border-radius

    一.border-radius 可以同时设置1-4个值 a)1个值  控制4个圆角 b)2个值  第1个控制左上角和右下角   第2个值控制左下角和右上角 c)3个值  第1个控制   第2个值控制左 ...

  2. tensorflow: a Implementation of rotation ops (旋转的函数实现方法)

    tensorflow 旋转矩阵的函数实现方法 关键字: rot90, tensorflow 1. 背景 在做数据增强的操作过程中, 很多情况需要对图像旋转和平移等操作, 针对一些特殊的卷积(garbo ...

  3. 个体商户POS机遭遇禁刷 职业养卡人称自有对策

    “套现猛于虎也”,这对于信用卡业而言无异于一大命门,信用卡套现金额的规模如同滚雪球般愈演愈烈.记者昨日采访银行业内了解到,虽然为防套现将根据规定关闭个体商户POS机刷信用卡的功能,但职业“养卡人”不以 ...

  4. C++数组怎么复制

    C++数组怎么复制: #include <string.h>main(){int a[10]={34,56,4,10,77,51,93,30,5,52};int b[10];memcpy( ...

  5. 一、WPF 2个datagrid之间同步进度条

    页面代码 <Grid DockPanel.Dock="Left" Width="400"> <DataGrid Name="dgSo ...

  6. RBTree和AVL

      红黑树和AVL的相同:都是平衡二叉树,所以插入删除修改查询都非常高效. 红黑树和AVL的区别: 红黑树:  不是要求绝对平衡,付出的代价是要着色,查询次数可能会多一层,好处是减少旋转次数. AVL ...

  7. 【转】[C++]实现委托模型

    原文地址:http://www.cnblogs.com/zplutor/archive/2011/09/17/2179756.html 我对.Net的委托模型印象很深刻,使用委托,可以快速实现观察者模 ...

  8. 优秀 Java 程序员写代码的风格

    往 期 精 彩 推 荐    [1]Java Web技术经验总结 [2]15个顶级Java多线程面试题及答案,快来看看吧 [3]面试官最喜欢问的十道java面试题 [4]从零讲JAVA ,给你一条清晰 ...

  9. WSDM 2014推荐系统论文

    Xiao Yu, Hao Ma, Paul Hsu, Jiawei Han On Building Entity Recommender Systems Using User Click Log an ...

  10. Windows文件批量重命名

    选择要命名的文件 按F2,编辑名字 然后按回车就行了 电视剧命名,我认为这样足够了