mybatis中的typeAlias

2023-10-26

mybatis 的 xml 文件中需要写类的全限定名,较繁琐,可以配置自动扫描包路径给类配置别名,有两种配置方式。

方式一:

mybatis-config.xml 中配置

<typeAliases>
  <package name="top.jimc.ssm.model"/>
</typeAliases>

此配置不支持多路径配置,不支持通配符配置,不灵活。

方式二:

SqlSessionFactory 中配置 typeAliasesPackage 属性,Mybatis主配置文件 configLocation.xml

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--dataource-->
        <property name="dataSource" ref="dataSource"/>
        <!--Mapper files-->
        <property name="mapperLocations" value="classpath*:config/mybatis/local/*.xml" />
        <!--Entity package-->
        <!--<property name="typeAliasesPackage" value="com.dianping.zebra.dao.entity" />-->
        <property name="typeAliasesPackage" value="com.dianping.emidas.lottery.dao.entity"/>
        <property name="configLocation" value="classpath:config/mybatis/mybatis-configuration.xml" />
    </bean>

0x01:标签介绍
在 MyBatis 的 sql 映射配置文件中,需要使用 paramterType、resultType 来设置 sql 语句的输入输出参数,一般参数都是基本的数据类型或封装类型,但都需要声明该类型的全路径,java.lang.String,或者 cn.com.mybatis.pojo.User, 这时就可以通过 typeAliases 别名来设置,简化复杂度

0x02:代码示例
例如之前介绍的模糊查询示例,当不使用别名,而使用全路径时,配置示例代码如下:

<select id="findUserByUsername" parameterType="java.lang.String" resultType="cn.com.mybatis.pojo.User">
    SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>

当通过设置 MyBatis 的全局配置文件 SqlMapConfig 中的 typeAliases 属性后,就可以为 sql 映射文件中的输入 / 输出参数设置类型别名,然后在 sql 映射配置文件中指定输入输出参数类型时使用的别名。首先,SqlMapConfig 配置文件示例如下:

<typeAliases>
    <typeAlias alias="user" type="cn.com.mybatis.pojo.User"/>
    <typeAlias alias="str" type="java.lang.String"/>
</typeAliases>
这样就可以在 sql 映射配置文件中使用别名来指定输入 / 输出参数的类型了,其示例代码如下:

<select id="findUserByUsername" parameterType="str" resultType="user">
    SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>


0x03:别名拓展
像刚才的 JavaBean,User 是放在 cn.com.mybatis.pojo 包里的,包里可能也会存在其他多个 JavaBean,这时候一个一个配置别名就会很麻烦,这时候就需要批量定义别名,批量指定很简单,只要指定包名即可,之后程序会为包下的所有类都自动加上别名,其定义别名的规范就是对应包装类的类名首字母变为小写,其示例代码如下:

<typeAliases>
    <package name="cn.com.mybatis.pojo"/>
</typeAliases>
这时设置的包名下的类就都有了别名,别名就是类名(首字母小写),像刚才的 User 类,其别名就为 user。
除了在配置文件中单独的配置别名和批量的配置别名两种方式外,还有一种方式,就是通过注解的方式来配置别名,方法也很简单,在需要配置别名的类前通过 @Alias 注解即可,参数就是别名名称,例如以下示例代码:

@Alias("user")
public class User{
    //其他代码
}


0x04:常见类型别名汇总
MyBatis 已经为 Java 常见类型默认指定了别名,可以直接使用。因为有一些基本数据类型和包装类型的名称一样(例如基本数据类型 byte 和包装类型 java.lang.Byte),所以在基本的数据类型前面加了下划线 “_” 来以此区分(byte 别名就是_byte,java.lang.Byte 别名就是 byte)。常见的类型对应别名如下:

 

0x05:总结
在开发中,经常使用别名,可以提高开发效率,简化配置。

对常用的java 类型,已经内置了一些别名支持。这些别名都是不区分大小写的。注意java
的基本数据类型,它们进行了特别处理,加了“_”前缀。
 

参考:http://www.yiibai.com/mybatis/mybatis_typealiases.html


 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis中的typeAlias 的相关文章

  • 在学习DNS的过程中给我的启发

    在学习DNS的过程中给我的启发 在国内 关于DNS相关的话题一直络绎不绝 比如DNS根服务器为什么中国没有 还有Anycast BGP实现负载 为什么DNS只有13个 还有DNS over HTTPS 和 DNS over TLS的优劣等等
  • 使用SqlBulkCopy大批量导入数据

    实际的开发可能会遇到数据大批量插入数据的问题 若是一条条的循环倒数效率非常低下 这个较好的解决方案 1 2 protected void Button1 Click object sender EventArgs e 3 4 5 DateT
  • android 使用SurfaceFlinger 服务的流程分析,基于4.4(三)----图像的输出过程

    经过前面两篇的介绍 现在可以分析surfaceflinger 的处理UI buffer的流程了 目录 一 onMessageReceived 1 handleMessageTransaction 2 handleMessageInvalid
  • 百度飞桨(厦门)人工智能产业赋能中心签约,共创人工智能产业协同服务新生态...

    9月8日 第二十三届中国国际投资贸易洽谈会在厦门正式开幕 当日 厦门市思明区政府和火炬管委会 与百度正式签约 联手共建百度飞桨 厦门 人工智能产业赋能中心 思明区委书记林重阳 厦门市工信局副局长 大数据局长许文恭 厦门市科技局副局长黄颖 火
  • R手册(Tidy+Transform)--tidyr

    文章目录 Reshape Data Split or Unit Cells Handle Missing Values tidyr Easily tidy data with spread and gather functions Resh
  • 【Java八股文总结】之计算机网络

    文章目录 计算机网络 一 基础 1 网络体系结构 2 HTTP协议 TCP协议 UDP协议比较 3 网络协议 4 WebSocket和Socket的区别 5 常见的端口及其对应的服务 6 从浏览器输入URL到页面展示发生了什么 1 DNS域
  • 刀具补偿资料汇总

    问题描述 采用不同尺寸的刀具加工同一轮廓尺度的零件 为了编程方便和不改变已经制备好的穿孔带 所以数控装置常备有刀具补偿功能 刀具位置补偿 刀具1 刀尖B点为编程起点 刀具2 刀尖C点 备注 刀尖坐标值 Xb Zb C点坐标原点I C点坐标原
  • 苹果如何安装ipa

    懒省事使用爱思助手即可 1 下载cydiaimpactor 官方地址 百度云下载 https pan baidu com s 1rYIG4go fOEHarSjziA1eg 提取码 3b48 2 连上苹果手机 启动cydiaimpactor
  • 【TensorFlow 入门】1、函数基础

    文章目录 一 np random 1 np random RandomState 2 np random uniform 3 np random rand 4 np random RandomState 二 tf reduce 一 np r
  • 忘记宝塔面板安全入口?修改登录入口让你的服务器更加安全!

    宝塔面板新增加了安全入口登录方式 新安装的宝塔面板默认会随机生成一个8位字符的安全目录 阿里云百科网分享宝塔安全入口登录方式 安全入口修改方法及安全入口关闭的方法 什么是安全入口 原来的宝塔登录地址为 http 你的服务器ip 8888 这
  • Python代码实现“FlappyBird”小游戏

    开发工具 Python版本 3 6 4 相关模块 pygame模块 以及一些Python自带的模块 相关文件 关注公众号 Python学习指南 回复 FlappyBird 获取 环境搭建 安装Python并添加到环境变量 pip安装需要的相
  • SpringBoot admin 2.0 详解

    一 什么是Spring Boot Admin Spring Boot Admin是一个开源社区项目 用于管理和监控SpringBoot应用程序 应用程序作为Spring Boot Admin Client向为Spring Boot Admi
  • vue项目中使用echarts和china.js实现中国地图

    在echarts最新的5 4 0版本中 已不能直接引用china js来绘制中国地图 需要我们自己下载china js包 在网上查找资料 大部分是在index html文件中直接引入echarts和china js文件 但我使用这种方法在v
  • 平均池化和最大池化区别

    pooling的结果是使得特征减少 参数减少 但pooling的目的并不仅在于此 pooling目的是为了保持某种不变性 旋转 平移 伸缩等 常用的有mean pooling max pooling和Stochastic pooling三种
  • @RequestBody 500 的原因

    因为 RequestBody是调用目标类的无参构造器 若有有参构造就会报错 因此一般实用RequestBody的类 和 domain不同 应该重新配置一个包来存放此类 类 且之赋予他们get set方法
  • VTK教程1--------VTK在win10下的安装

    VTK的安装 本文在win10操作系统下 安装了VTK8 1 2 下文是安装顺序 事先准备三个软件 1 Visual Studio2017 community 该版本可以免费使用 2 CMake 本文使用的版本是cmake 3 13 1 w
  • XREAL 联合创始人吴克艰谈AR:下一代计算平台及其关键技术

    编者按 一种行业观点是 AR或是未来十年 三十年的革命性技术 是下一代计算平台 近半个世纪 我们总能听到苹果在AR行业的创新动作 开辟了新的硬件范式 AR VR行业为苹果不断欢呼的同时 激发了人们的好奇心 究竟 人类在戴上AR眼镜的那一瞬间
  • 【C++】内存分区&引用

    内存分区 首先我们要了解 内存区域大概分为四个区域 1 代码区 这里主要存放我们写的代码的二进表达式 即CPU可以看懂的机械指令 这个区域有两个特征 只读和共享 前者可以保证代码的不会被随意修改 后者可以保证相同代码多次阅读不需要创建多个副
  • linux-kali 2020.3.3 虚拟机 环境 下载安装

    一 所需环境配置文件下载 1 虚拟机 这次配置环境使用的vmware版本为15 5 0 虚拟机大家可以自行在相关微信公众号上搜索破解版 按照其上进行安装 如下图 如果需要也可以vm官方网站上进行下载相关软件 直接下载对应版本即可 vm官网链
  • python argument 1 must be 2-item sequence, not int

    在继续python学习的时候 发现报错了 出现错误argument 1 must be 2 item sequence not int 明明我是照着书打的 为什么会出现错误呢 import pygame import sys from se

随机推荐