mybatis -别名注解 @Alias注解在类上的使用方式

本文详细介绍了MyBatis中typeAlias配置的三种方法,包括定义别名、扫描包方式及注解方式,帮助开发者更好地理解和应用MyBatis的别名机制。

比如在类上使用该注解 @Alias("user")

@Alias("user")
public class UserInfoDL implements Serializable, Storable {

则在mapper.xml文件中resultType="user",里面所有的全路径对象都可替代为user;

<!--<resultMap id="userResult" type="com.dsep.domain.user.UserInfoDL" >-->
<resultMap id="userResult" type="user" >
    <result property="id" column="id"/>
    <result property="userName" column="user_name"/>
    <result property="ucarEmail" column="ucar_email"/>
    <result property="phone" column="phone"/>
    <result property="isAlarm" column="is_alarm"/>
    <result property="createTime" column="create_time"/>
    <result property="modifyTime" column="modify_time"/>
    <association property="roleInfoList" column="id" select="findRoleInfoByUserId"/>
</resultMap>

<!--<resultMap id="roleResult" type="role">-->
    <result property="id" column="id"/>
    <result property="code" column="code"/>
    <result property="name" column="name"/>
    <result property="createTime" column="create_time"/>
    <result property="modifyTime" column="modify_time"/>
</resultMap>在myBatisConfig.xml中 ,sqlSessionFactory需要配置注解  需要扫的路径;

<typeAliases>

   <package name="com.dsep.domain"/>

</typeAliases>

Mybatis之typeAlias配置的3种方法

1.定义别名:

<typeAliases>

  <typeAlias alias="user" type="com.dsep.domain.user.UserInfoDL" />

</typeAliases>

2.扫描包方式:

<typeAliases>

  <package name="com.dsep.domain" />

</typeAliases>

 

3.注解方式:

@Alias("user") public class UserInfoDL implements Serializable, Storable {

 

<think>我们正在讨论MyBatis-Plus中配置TypeHandler时使用别名的问题。根据用户的问题,我们需要指导如何在MyBatis-Plus中为TypeHandler配置别名。在MyBatis中,TypeHandler用于处理Java型和JDBC型之间的转换。有时,我们可能希望为自定义的TypeHandler设置一个别名,以便在映射文件中方便地引用。在MyBatis-Plus中,我们可以通过多种方式配置TypeHandler,其中使用别名方式Mybatis似。步骤:1.自定义TypeHandler:首先需要编写自己的TypeHandler,实现Mybatis的TypeHandler接口或继承BaseTypeHandler。2.为TypeHandler设置别名:在Mybatis的配置中,我们可以通过别名(typeAliases)来为TypeHandler设置别名。3.在映射文件中使用别名:在定义ResultMap或参数映射时,使用别名来引用TypeHandler。但是,在MyBatis-Plus中,我们通常使用注解配置,也可以使用XML配置。参考引用[1]中提到了配置mybatis-config.xml,因此我们可以考虑在mybatis-config.xml中配置别名。示例:步骤1:自定义TypeHandler例如,我们有一个自定义的TypeHandler用于处理List型:```javapublic classListTypeHandler extendsBaseTypeHandler<List<String>>{//实现方法}```步骤2:在mybatis-config.xml中配置别名在<typeAliases>标签下,为TypeHandler设置别名: ```xml<typeAliases><!--其他别名配置--><typeAliastype="com.example.handler.ListTypeHandler"alias="ListTypeHandler"/></typeAliases> ```步骤3:在映射文件中使用在ResultMap中指定某个列使用这个TypeHandler:```xml<result column="tags" property="tags" typeHandler="ListTypeHandler"/>```另外,MyBatis-Plus也支持通过注解来配置TypeHandler。在实体的字段上使用@TableField注解指定typeHandler: ```java@TableField(typeHandler =ListTypeHandler.class) privateList<String> tags; ```但是,这里直接使用名,并没有使用别名。那么,如果我们想用别名怎么办?实际上,在注解中不能直接使用别名,而是必须使用Class对象。因此,在注解方式下,我们无法使用别名。所以,使用别名主要是在XML映射文件中使用。另外,我们还可以在MyBatis-Plus的全局配置中通过配置typeHandler来注册,但这并不是别名方式。注意:在MyBatis中,我们还可以通过扫描包的方式来注册TypeHandler,这样就不需要为每个TypeHandler单独配置别名。但是,如果我们需要在XML中引用,那么别名可以简化配置。总结:1.在XML配置中使用别名:在mybatis-config.xml中配置别名,然后在XML映射文件中使用别名引用TypeHandler。2.在注解方式下,无法使用别名,只能直接指定TypeHandler的。因此,如果用户需要在XML映射文件中使用简短的别名来引用TypeHandler,可以按照上述步骤配置。参考引用[4]中提到了数据库连接的配置,虽然不直接相关,但提醒我们在配置数据库连接时要注意细节。生成相关问题:1.如何在MyBatis-Plus中自定义TypeHandler?2. MyBatis-Plus中如何配置全局的TypeHandler?3.在MyBatis-Plus中,如何通过注解方式指定TypeHandler?4.使用TypeHandler时,如何解决数据库时区问题(如引用[4]中提到的时区问题)?注意:用户的问题集中在“别名”的使用上,因此我们主要解答别名配置的方法。</think>### MyBatis-Plus 中配置 TypeHandler 使用别名的方法 在 MyBatis-Plus 中,通过别名配置 TypeHandler 需要以下步骤: #### 1. **自定义 TypeHandler** 首先创建自定义 TypeHandler (以处理 List<String> 型为例): ```java public class ListTypeHandler extends BaseTypeHandler<List<String>> { @Override public void setNonNullParameter(...) { // 实现JDBC参数设置逻辑 } @Override public List<String> getNullableResult(...) { // 实现结果集转换逻辑 } } ``` #### 2. **配置别名(关键步骤)** 在 `mybatis-config.xml` 中注册别名: ```xml <typeAliases> <!-- 为TypeHandler设置别名 --> <typeAlias type="com.example.handler.ListTypeHandler" alias="ListHandler"/> </typeAliases> ``` #### 3. **在映射中使用别名** ##### 方式1:XML 映射文件 ```xml <resultMap id="userMap" type="User"> <result column="tags" property="tags" typeHandler="ListHandler"/> </resultMap> ``` ##### 方式2:注解方式(需结合 XML 别名) ```java public class User { @TableField(typeHandler = ListHandler.class) // 使用别名 private List<String> tags; } ``` #### 4. **全局配置(可选)** 在 MyBatis-Plus 配置中全局注册: ```java @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 添加其他拦截器... return interceptor; } // 注册TypeHandler @Bean public ConfigurationCustomizer configurationCustomizer() { return configuration -> { configuration.getTypeHandlerRegistry().register(ListHandler.class); // 使用别名 }; } } ``` #### 注意事项: 1. **别名作用域** 别名仅在 MyBatis 配置文件作用域内有效,需确保别名在 `mybatis-config.xml` 中正确定义[^1]。 2. **依赖冲突** 如遇 `ClassNotFoundException`,检查是否缺少 `mybatis-typehandlers-jsr310` 等依赖(似引用[3]中的依赖问题)。 3. **JDBC 参数** 数据库连接需正确配置参数,如 MySQL 时区设置(参考引用[4]): ```properties spring.datasource.url=jdbc:mysql:///db?serverTimezone=Asia/Shanghai ``` 4. **优先级规则** - 字段注解 > XML 映射 > 全局注册 - 自定义 TypeHandler 优先于内置处理器 > **最佳实践**:对于复杂型处理,建议结合 `@MappedTypes` 和 `@MappedJdbcTypes` 注解声明处理器作用范围,减少显式配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luning95

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值