一起来学习Mybatis(四)-配置文件之typeAliases 元素

前言


  上篇文章分析了MyBatis配置文件中的<properties>元素《一起来学习Mybatis(三)-配置文件之properties 属性》,今天再来了解一个简单却很有用的元素<typeAliases >


分析


  typeAliases即是类型别名,是为 Java 类型设置一个短的名字。它只在 XML 配置文件中起作用,来缩减长长的类型名称。比如:

<select id="selectUserByID" resultType="com.test.entity.UserEntity">

  这里的resultType需要使用包含完全路径的类名,如果使用typeAliases申明类型别名,会非常简单、方便。

<typeAliases>
  <typeAlias alias="User" type="com.test.entity.UserEntity"/>
</typeAliases>

  SQL Mapper只需要:

<select id="selectUserByID" resultType="User">

  看到这里,肯定会有疑问:难道类型别名只能一个一个的进行申明吗?如果有很多个岂不是很麻烦。MyBatis为了解决这个问题,还允许指定报名。

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

  MyBatis 会在 com.test.entity 包名下面搜索需要的实体类,默认会使用首字母小写的类名来作为它的别名。SQL Mapper可以这样用:

<select id="selectUserByID" resultType="userEntity">

  当然,除了在XML配置文件中配置别名,还可以使用注解的方式为POJO设置别名(在使用了package元素的情况下,注解方式配置的别名优先):

import org.apache.ibatis.type.Alias;
@Alias("User")
public class UserEntity {}
源码


  XML文件中的typeAliases元素是由 typeAliasesElement方法来解析的。

typeAliasesElement(root.evalNode("typeAliases"));

  进入typeAliasesElement方法体:

private void typeAliasesElement(XNode parent) {
    if (parent != null) {
      for (XNode child : parent.getChildren()) {
        //解析package元素
        if ("package".equals(child.getName())) {
          String typeAliasPackage = child.getStringAttribute("name");
          configuration.getTypeAliasRegistry().registerAliases(typeAliasPackage);
        } else {
          //解析typeAlias元素
          String alias = child.getStringAttribute("alias");
          String type = child.getStringAttribute("type");
          try {
            Class<?> clazz = Resources.classForName(type);
            if (alias == null) {
              typeAliasRegistry.registerAlias(clazz);
            } else {
              typeAliasRegistry.registerAlias(alias, clazz);
            }
          } catch (ClassNotFoundException e) {
            throw new BuilderException("Error registering typeAlias for '" + alias + "'. Cause: " + e, e);
          }
        }
      }
    }
  }
小结


  MyBatis已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,具体列表可以查看MyBatis文档

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
Mybatis-Plus 是 Mybatis 的增强工具,在使用它之前需要先配置 Mybatis。以下是一个简单的 Mybatis-Plus 配置文件示例: ```xml <?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis-plus"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration> ``` 这个配置文件中: - `<environments>` 标签用于配置数据源和事务管理器。这里只配置了一个 `development` 环境,使用的是 JDBC 事务管理器和 POOLED 数据源。 - `<dataSource>` 标签配置数据源,这里使用的是 POOLED 数据源,需要配置数据库连接相关信息。 - `<mappers>` 标签用于配置 Mapper 接口对应的 XML 文件,这里只配置了一个 `UserMapper.xml` 文件,文件路径相对于类路径。 除了上述配置外,还需要在 Spring Boot 项目中配置 Mybatis-Plus 的自动配置类 `MybatisPlusAutoConfiguration`,并在 Mapper 接口上添加 `@Mapper` 注解。例如: ```java @Mapper public interface UserMapper extends BaseMapper<User> { // ... } ``` 其中,`User` 是实体类,继承了 Mybatis-Plus 提供的 `BaseEntity`,`UserMapper` 继承了 Mybatis-Plus 提供的 `BaseMapper` 接口。这样,就可以使用 Mybatis-Plus 提供的一些便捷方法来操作数据库了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值