iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Mybatis中怎么配置typeAlias标签
  • 212
分享到

Mybatis中怎么配置typeAlias标签

2023-06-20 15:06:16 212人浏览 八月长安
摘要

mybatis中怎么配置typeAlias标签,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Mybatis typeAlias标签在实际的工程之中,类的全限定名

mybatis中怎么配置typeAlias标签,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Mybatis typeAlias标签

在实际的工程之中,类的全限定名称很长,当我们需要大量使用的时候,这非常不方便的,然而mybatis提供了typeAlias别名标签供我们别名和自定义别名,然而在mybatis之中别名的注册实际上由TypeAliasReGIStry去定义,需要非常注意的是,在mybatis中名不区分大小写的,这一点非常重要。

下面展示了mybatis自己自动初始化了一些别名:

Mybatis中怎么配置typeAlias标签

Mybatis中怎么配置typeAlias标签

那么他是如何实现初始化别名的呢?

一般的是通过Configuration获取TypeAliasRegistry类对象其中有一个getTypeAliasRegisry方法获取别名,获取之后就可以通过registerAlias方法对别名注册了。

事实上Configuration对象也对一些常用的配置项配置了别名:

public class TypeAliasRegistry { //使用的HashMap来传记录,String为键或者属性名称,Class<?>则为键值或者为//属性值。  private final Map<String, Class<?>> TYPE_ALIASES = new HashMap<String, Class<?>>();     public TypeAliasRegistry() {      registerAlias("string", String.class);     registerAlias("byte", Byte.class);    registerAlias("long", Long.class);    registerAlias("short", Short.class);    registerAlias("int", Integer.class);    registerAlias("integer", Integer.class);    registerAlias("double", Double.class);    registerAlias("float", Float.class);    registerAlias("boolean", Boolean.class);     registerAlias("byte[]", Byte[].class);    registerAlias("long[]", Long[].class);    registerAlias("short[]", Short[].class);    registerAlias("int[]", Integer[].class);    registerAlias("integer[]", Integer[].class);    registerAlias("double[]", Double[].class);    registerAlias("float[]", Float[].class);    registerAlias("boolean[]", Boolean[].class);     registerAlias("_byte", byte.class);    registerAlias("_long", long.class);    registerAlias("_short", short.class);    registerAlias("_int", int.class);    registerAlias("_integer", int.class);    registerAlias("_double", double.class);    registerAlias("_float", float.class);    registerAlias("_boolean", boolean.class);     registerAlias("_byte[]", byte[].class);    registerAlias("_long[]", long[].class);    registerAlias("_short[]", short[].class);    registerAlias("_int[]", int[].class);    registerAlias("_integer[]", int[].class);    registerAlias("_double[]", double[].class);    registerAlias("_float[]", float[].class);    registerAlias("_boolean[]", boolean[].class);     registerAlias("date", Date.class);    registerAlias("decimal", BigDecimal.class);    registerAlias("bigdecimal", BigDecimal.class);    registerAlias("biginteger", BigInteger.class);    registerAlias("object", Object.class);     registerAlias("date[]", Date[].class);    registerAlias("decimal[]", BigDecimal[].class);    registerAlias("bigdecimal[]", BigDecimal[].class);    registerAlias("biginteger[]", BigInteger[].class);    registerAlias("object[]", Object[].class);     registerAlias("map", Map.class);    registerAlias("hashmap", HashMap.class);    registerAlias("list", List.class);    registerAlias("arraylist", ArrayList.class);    registerAlias("collection", Collection.class);    registerAlias("iterator", Iterator.class);     registerAlias("ResultSet", ResultSet.class);  }   @SuppressWarnings("unchecked")  // throws class cast exception as well if types cannot be assigned  public <T> Class<T> resolveAlias(String string) {    try {      if (string == null) {        return null;      }      // issue #748      String key = string.toLowerCase(Locale.ENGLISH);      Class<T> value;      if (TYPE_ALIASES.containsKey(key)) {        value = (Class<T>) TYPE_ALIASES.get(key);      } else {        value = (Class<T>) Resources.classForName(string);      }      return value;    } catch (ClassNotFoundException e) {      throw new TypeException("Could not resolve type alias '" + string + "'.  Cause: " + e, e);    }  }     public void registerAliases(String packageName){    registerAliases(packageName, Object.class);  }           public void registerAliases(String packageName, Class<?> superType){    ResolverUtil<Class<?>> resolverUtil = new ResolverUtil<Class<?>>();    resolverUtil.find(new ResolverUtil.IsA(superType), packageName);    Set<Class<? extends Class<?>>> typeSet = resolverUtil.getClasses();    for(Class<?> type : typeSet){      // Ignore inner classes and interfaces (including package-info.java)      // Skip also inner classes. See issue #6    //判断是否为匿名类或者是接口,成员类即类中的嵌套类,是的话不注册      if (!type.isAnonymousClass() && !type.isInterface() && !type.isMemberClass()) {        registerAlias(type);      }    }  }     public void registerAlias(Class<?> type) {    String alias = type.getSimpleName();    Alias aliasAnnotation = type.getAnnotation(Alias.class);    if (aliasAnnotation != null) {      alias = aliasAnnotation.value();    }     registerAlias(alias, type);  }   public void registerAlias(String alias, Class<?> value) {    if (alias == null) {      throw new TypeException("The parameter alias cannot be null");    }    // issue #748    String key = alias.toLowerCase(Locale.ENGLISH);    if (TYPE_ALIASES.containsKey(key) && TYPE_ALIASES.get(key) != null && !TYPE_ALIASES.get(key).equals(value)) {      throw new TypeException("The alias '" + alias + "' is already mapped to the value '" + TYPE_ALIASES.get(key).getName() + "'.");    }    TYPE_ALIASES.put(key, value);  }   public void registerAlias(String alias, String value) {    try {      registerAlias(alias, Resources.classForName(value));    } catch (ClassNotFoundException e) {      throw new TypeException("Error registering type alias "+alias+" for "+value+". Cause: " + e, e);    }  }      public Map<String, Class<?>> getTypeAliases() {    return Collections.unmodifiableMap(TYPE_ALIASES);  } }

以上是mybatis中关于别名的类,其在org.apache.ibatis.type包里面,还要注意某些已经注册过的类别就不要重复定义了,这会引起mybatis 的运行错误,那么我们如何实现自定义别名呢,

<typeAliases>         <typeAlias alias="role" type="com.*.类名"></typeAliases>

这样可以定义一个别名了,如果需要很多的类需要注册时,可以使用mybatis支持的扫描别名。

<typeAliases>         <package name="com."></typeAliases>

这样就会扫描指定的这个包,并将这个包中的类的第一个字母变为小写字母的新名字作为别名,假如扫描的多个包中有同名称的类,这时候就会产生异常,此时我们可以在pojo类添加Alias注解。

@Alias("User2")public class User{      ····}

这样就能够导致不同的包中出现相同的类名而导致自动扫描的别名一样造成的冲突,建议部分包名和类型名作为别名,可以有效进行区分。

Mybatis typeAlias配置

用3种方法实现typeAlias配置

1.定义别名:

<typeAliases>     <typeAlias alias="User" type="cn.lxc.vo.User" /></typeAliases>

2.扫描包方式:

<typeAliases>     <package name="cn.lxc.vo" /></typeAliases>

3.注解方式:

package cn.lxc.vo;import org.apache.ibatis.type.Alias;@Alias("User")public class User {    private int id;    private String name;    private int age;        public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: Mybatis中怎么配置typeAlias标签

本文链接: https://www.lsjlt.com/news/298008.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis中怎么配置typeAlias标签
    Mybatis中怎么配置typeAlias标签,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Mybatis typeAlias标签在实际的工程之中,类的全限定名...
    99+
    2023-06-20
  • Mybatis配置之typeAlias标签的用法
    Mybatis typeAlias标签 在实际的工程之中,类的全限定名称很长,当我们需要大量使用的时候,这非常不方便的,然而mybatis提供了typeAlias别名标签供我们别名和...
    99+
    2024-04-02
  • Mybatis typeAlias的配置方式有哪些
    这篇文章主要介绍了Mybatis typeAlias的配置方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mybatis typeAlias的配置方式有哪些文章都会有所收获,下面我们一起来看看吧。Myb...
    99+
    2023-06-26
  • Mybatis mapper标签中配置子标签package的坑及解决
    目录mapper标签中配置子标签package的坑Mybatis中mappers标签介绍配置方式1.接口所在包2.相对路径配置3.类注册引入4.使用URL绝对路径方式引入(不用)使用...
    99+
    2024-04-02
  • Mybatis之typeAlias配置的3种方式小结
    目录Mybatis typeAlias配置1.定义别名2.扫描包方式3.注解方式springboot加载mybatis的typeAlias问题为了清晰可见,直接贴代码Mybatis ...
    99+
    2024-04-02
  • Mybatis中resultMap标签和sql标签的设置方式
    目录resultMap标签和sql标签的设置1、项目目录2、数据库中的表的信息3、配置文件的信息4、User类5、IUserDao接口6、MybatisTest7、运行结果resul...
    99+
    2024-04-02
  • Mybatis配置之properties和settings标签的用法
    Mybatis properties标签和settings标签 本次将讲述mybatis的配置,主要的配置是基于mybatis的配置文件来进行配置的,其配置文件并不复杂 如下面的例子...
    99+
    2024-04-02
  • Mybatis中where标签与if标签怎么结合使用
    这篇文章主要介绍“Mybatis中where标签与if标签怎么结合使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis中where标签与if标签怎么结合使用”文章能帮...
    99+
    2023-07-05
  • Mybatis中typeAliases标签和package标签使用
    目录typeAliases标签和package标签的使用1、typeAliases2、packageproperties,typeAliases,package三个标签使用以及细节t...
    99+
    2024-04-02
  • mybatis中<choose>标签怎么使用
    本文小编为大家详细介绍“mybatis中<choose>标签怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis中<choose>标签怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-06-30
  • python中怎么匹配HTML标签
    python中怎么匹配HTML标签,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。匹配HTML标签#coding:utf-8  import&...
    99+
    2023-06-17
  • 怎么在MyBatis中使用动态SQL标签
    这篇文章将为大家详细讲解有关怎么在MyBatis中使用动态SQL标签,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.MyBatis动态SQLMyBatis 的强大特性之一便是它的动态 SQ...
    99+
    2023-06-14
  • mybatis中的trim标签有什么用
    MyBatis中的trim标签用于在SQL语句的开头和结尾去除多余的空格,并可以在SQL语句的开头和结尾添加自定义的字符串。trim标签有以下几种使用方式:1. prefixOverrides:指定要删除的前缀字符串,只有当SQL语句以...
    99+
    2023-08-09
    mybatis trim
  • mybatis的where标签怎么使用
    本篇内容主要讲解“mybatis的where标签怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mybatis的where标签怎么使用”吧!我们经常在动态构造sql时,...
    99+
    2023-06-29
  • mybatis中怎么配置注解
    mybatis中怎么配置注解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。注解与xml配置的对应关系mybatis中注解就是简单不需要写配置文件,适合简单的数据处理,理解起来比...
    99+
    2023-06-20
  • mybatis中trim标签的作用是什么
    在MyBatis中,trim标签用于对SQL语句进行处理,可以用于移除或者添加指定的字符串。trim标签的作用有以下几个方面:1. ...
    99+
    2023-09-11
    mybatis
  • mybatis中set标签的用法是什么
    在MyBatis中,set标签用于指定更新语句中要更新的字段以及对应的数值。set标签中包含的子标签会生成一组逗号分隔的赋值语句,用...
    99+
    2024-03-04
    mybatis
  • mybatis中set标签的作用是什么
    在MyBatis中,set标签用于指定更新语句中需要设置的字段及其对应的值。通过set标签,可以动态地设置更新语句中需要更新的字段,...
    99+
    2024-03-04
    mybatis
  • Mybatis sqlMapConfig.xml中的mappers标签使用
    目录sqlMapConfig.xml中的mappers标签mappers(映射配置)1.1:通过resource加载单个映射文件1.2:通过mapper接口加载单个映射文件1.3:批...
    99+
    2024-04-02
  • Mybatis的mapper.xml中if标签test判断怎么使用
    本文小编为大家详细介绍“Mybatis的mapper.xml中if标签test判断怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis的mapper.xml中if标签test判断怎么使用”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-07-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作