为什么要用类型别名?

答:类型别名可为 Java 类型设置一个缩写名字。 它仅用于 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.kuang.dao.UserMapper">
  7.  
  8. <select id="getUserList" resultType="com.kuang.pojo.User">
  9. select * from mybatis.user
  10. </select>
  11. </mapper>

resultType必须使用全限定类名,这样的名字很长,我们希望简单一点,直接叫User,怎么办呢?这时就可以用类型别名来解决这个问题。

注意:

  1. 类型别名是写在核心配置文件mybatis-config.xml中设置的

一、使用类型别名(typeAliases)的两种方式

1.通过<typeAliases>标签下的子标签<typeAlias>给指定的全限定类名取别名

  1. <typeAliases>
  2. <typeAlias type="com.kuang.pojo.User" alias="User"/>
  3. </typeAliases>

当这样配置时,User 可以用在任何使用 com.kuang.pojo.User的地方。例如:

  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.kuang.dao.UserMapper">
  7.  
  8. <select id="getUserList" resultType="User"> //这里使用了别名
  9. select * from mybatis.user
  10. </select>
  11. </mapper>

2.通过<typeAliases>标签下的子标签<package>指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,例如:

  1. <typeAliases>
  2. <package name="com.kuang.pojo"/>
  3. </typeAliases>

在没有注解的情况下,会使用首字母小写的非限定类名来作为它的别名(首字母也可以大写。首字母小写是为了区别上边方式一创建的别名,方别程序员读懂代码)。 比如com.kuang.pojo.User 的别名为 user;见下面的例子:

  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.kuang.dao.UserMapper">
  7.  
  8. <select id="getUserList" resultType="user"> //此处使用别名
  9. select * from mybatis.user
  10. </select>
  11.  
  12. </mapper>

若有注解,则别名为其注解值。见下面的例子:

核心配置文件:

  1. <typeAliases>
  2. <package name="com.kuang.pojo"/>
  3. </typeAliases>

pojo类:

  1. package com.kuang.pojo;
  2.  
  3. import org.apache.ibatis.type.Alias;
  4.  
  5. @Alias("example") //注意这里,使用了注解来自定义别名
  6. public class User {
  7. private int id;
  8. private String name;
  9. private String pwd;
  10.  
  11. public User() {
  12. }
  13.  
  14. public User(int id, String name, String pwd) {
  15. this.id = id;
  16. this.name = name;
  17. this.pwd = pwd;
  18. }
  19.  
  20. public int getId() {
  21. return id;
  22. }
  23.  
  24. public void setId(int id) {
  25. this.id = id;
  26. }
  27.  
  28. public String getName() {
  29. return name;
  30. }
  31.  
  32. public void setName(String name) {
  33. this.name = name;
  34. }
  35.  
  36. public String getPwd() {
  37. return pwd;
  38. }
  39.  
  40. public void setPwd(String pwd) {
  41. this.pwd = pwd;
  42. }
  43.  
  44. @Override
  45. public String toString() {
  46. return "User{" +
  47. "id=" + id +
  48. ", name='" + name + '\'' +
  49. ", pwd='" + pwd + '\'' +
  50. '}';
  51. }
  52. }

映射文件:

  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.kuang.dao.UserMapper">
  7.  
  8. <select id="getUserList" resultType="example"> //此处使用了别名
  9. select * from mybatis.user
  10. </select>
  11.  
  12. </mapper>

二、常见的 Java 类型内建的类型别名

注意:为了应对原始类型的命名重复,采取了特殊的命名风格。

mybatis学习——类型别名(typeAliases)的更多相关文章

  1. MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM)

    类型别名(typeAliases):     作用:通过一个简单的别名来表示一个冗长的类型,这样可以降低复杂度.    类型别名标签typeAliases中可以包含多个typeAlias,如下 < ...

  2. MyBatis中关于别名typeAliases的设置

    第一种:通过在配置文件中typeAlias节点设置type的方式 <?xml version="1.0" encoding="UTF-8" ?> & ...

  3. MyBatis数据持久化(四)类型别名

    Mybatis的类型别名指的是我们可以为Java类型自定义一个简短的名字,以达到简化配置的目的,在上篇博文中我们的sql语句配置文件内容如下: <?xml version="1.0&q ...

  4. mybatis学习之入门实例

    测试版本 mybatis:3.2.8 数据库:mysql 项目结构 jar包准备 mybatis-3.2.8.jar mysql-connector-java-5.1.39-bin.jar junit ...

  5. mybatis由浅入深day01_6SqlMapConfig.xml(6.2settings全局参数配置_6.3typeAliases(类型别名)_6.4typeHandlers(类型处理器)_6.5mappers(映射配置))

    6 SqlMapConfig.xml mybatis的全局配置文件SqlMapConfig.xml,配置内容和顺序如下: properties(属性) settings(全局配置参数) typeAli ...

  6. mybatis中自建的类型别名

    在使用mybatis过程中经常用到类型别名,除了我们自己新建的别名外,mybatis还自带了很多类型别名和java中的类型的映射,下面先看一个自建的别名的配置 <typeAliases> ...

  7. 浩哥解析MyBatis源码(八)——Type类型模块之TypeAliasRegistry(类型别名注册器)

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6705769.html 1.回顾 前面几篇讲了数据源模块,这和之前的事务模块都是enviro ...

  8. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)

    下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...

  9. MyBatis源码解析(八)——Type类型模块之TypeAliasRegistry(类型别名注册器)

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6705769.html 1.回顾 前面几篇讲了数据源模块,这和之前的事务模块都是enviro ...

随机推荐

  1. 解决在Vim中鼠标右键不能粘贴问题

    最近维护一台服务器,使用putty登录后,用vim时,鼠标右键不能 粘贴而是进入了visual模式.网上查找一番找到了解决方法: 方 法一:在普通模式下键入" :set mouse-=a&q ...

  2. SSRF_FastCGI

    SSRF_FastCGI 目录 SSRF_FastCGI FastCGI协议 SSRF ssrf + fastcgi 参考 FastCGI协议 简介 Fast CGI源自旧版本的CGI 路由/结构图 ...

  3. 制作 PPT 的新方式出现了——GitHub 热点速览 v.21.19

    作者:HelloGitHub-小鱼干 想当初 Markdown 的出现,拯救了多少死在 Word 样式调整上的人,现在,slidev 出现了,它让你 Focus 在本该专注的 PPT 内容制作上而不需 ...

  4. .NET 在信创常用软件适配清单之中?

    2020年8月份写了一篇文章<.NET Core也是国产化信息系统开发的重要选项>, 这又过去了大半年了,在信创领域发生了很大的变化,今天写这篇文章主要是想从信创常用软件适配清单 看一看. ...

  5. C++虚函数 - 静态函数能否为虚函数 .

    1.virtual与静态函数 C++中,静态成员函数不能被声明为virtual函数. 例如,下面的程序会编译失败. #include<iostream> class Test { publ ...

  6. (原创)高DPI适配经验系列:(三)字体与字号、缩放锚点

    一.前言 程序最基本的元素,就是文本,也就是字体.如果程序未进行高DPI的适配,最直观的感受便是字体的模糊.所以本篇便来说一下高DPI适配中的字体问题. 高DPI的适配,简单来说便是便是根据不同的DP ...

  7. Mybatis-plus在原有的select查询语句中动态追加查询条件

    一.适用场景 1.使用了xml形式的mapper.2.不想在select查询中大量使用<if>标签来判断条件是否存在而加入条件. 二.步骤 1.自定义wrapper继承QueryWrapp ...

  8. CocoaPods 构建自己的 Pod 库

    构建一个自己的库供其它人使用是不是一件很酷(苦)的事情,通过CocoaPods 可以快捷的构建自己库,并向全世界分享你的成果 一.创建 Podspec 有两种方式: 使用命令 pod lib crea ...

  9. [刷题] 112 Path Sum

    要求 给出一个二叉树及数字sum,判断是否存在一条从根到叶子的路径,路径上的所有节点和为sum 实现 转化为寻找左右子树上和为 sum-root 的路径,到达叶子节点时递归终止 注意只有一个孩子时,根 ...

  10. SystemVerilog数组(一)