Mybatis xml中引用枚举值

3 篇文章 0 订阅
1 篇文章 0 订阅
xml中引用枚举值
${@com.demo.Sex@MAN.value}
${@枚举类全类名@枚举实例.属性名}
  • 例:
package com.demo.Sex;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum Sex{

    /**
     * 0=男
     */
    MAN("0"),

    /**
     * 1=女
     */
    WOMAN("1"),

    ;

    private final String value;
}

#那么xml文件中应该写
select * from user where sex = '${@com.demo.Sex@MAN.value}'
#如果枚举类是一个内部类的话,则使用`$`符获取
select * from user where sex = '${@com.demo.User$Sex@MAN.value}'
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MyBatis 获取枚举,可以使用 TypeHandler 来完成。TypeHandler 是 MyBatis 提供的类型处理器,可以将 Java 类型转换为 JDBC 类型,以及将 JDBC 类型转换为 Java 类型。对于枚举类型,MyBatis 提供了 EnumTypeHandler 类型处理器,可以将枚举类型转换为对应的字符串或整数。 下面是一个示例: 定义一个枚举类型: ```java public enum Gender { MALE, FEMALE; } ``` 在 MyBatis 的映射文件,需要使用 resultMap 或 resultType 来指定结果集映射的类型,同时也需要使用 typeHandler 指定类型处理器: ```xml <resultMap id="userResultMap" type="com.example.User"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="gender" column="gender" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/> </resultMap> ``` 在上面的示例,typeHandler 属性指定了 EnumTypeHandler 类型处理器。这样就可以将数据库枚举自动转换为对应的枚举类型。 如果枚举类型定义的是字符串,可以使用 MyBatis 提供的 EnumOrdinalTypeHandler 类型处理器,将字符串与对应的枚举进行映射。例如: ```java public enum Gender { MALE("M"), FEMALE("F"); private String value; Gender(String value) { this.value = value; } public String getValue() { return value; } public static Gender fromValue(String value) { for (Gender gender : Gender.values()) { if (gender.getValue().equals(value)) { return gender; } } throw new IllegalArgumentException("Invalid value: " + value); } } ``` 在映射文件使用 EnumOrdinalTypeHandler 类型处理器: ```xml <resultMap id="userResultMap" type="com.example.User"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="gender" column="gender" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </resultMap> ``` 这样就可以将数据库的字符串自动转换为对应的枚举类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值