MyBatis中使用Java类与枚举

那怎么能让MyBatis的中的数据一直引用Java中的枚举呢?3解决方案3.1创建自定义枚举首先,我们创建一个拥有中文名称的枚举接口ValueNameEnum.java:publicinterfaceValueNameEnumextendsSerializable{/***获取枚举值**@return枚举值*/@JsonValueintgetValue();/***获取枚举名称**@return枚举名称*/StringgetName...
MyBatis中使用Java类与枚举
1前言阅读本文您可以获得的技巧:
携带中文名称的自定义枚举类
在Mybatis的where条件中引用Java类或枚举,而不是使用写死的数值
您需要提前掌握的技能:
Java8
Mybatis
2预设情景系统存在用户信息表t_user,其中记录性别的字段为gender,我们需要编写一个查询全部女性用户的方法
其中性别需要使用枚举,1为男性,2为女性,-1为未知
简单的查询SQL如下:
selectid,name,gender,emailfromt_userwheregender=2可如果直接使用上面的SQL是存在一定问题的:后期如果将gender枚举中女性的值从2修改为88,除了修改枚举本身以外,还需要修改这条SQL
那怎么能让MyBatis的中的数据一直引用Java中的枚举呢?
3解决方案3.1创建自定义枚举首先,我们创建一个拥有中文名称的枚举接口ValueNameEnum.java:
publicinterfaceValueNameEnumextendsSerializable{/***获取枚举值**@return枚举值*/@JsonValueintgetValue();/***获取枚举名称**@return枚举名称*/StringgetName();}创建性别枚举Gender.java:
publicenumGenderimplementsValueNameEnum{MAN(1,"男性"),WOMAN(2,"女性");privateintvalue;privateintname;Gender(intvalue,intname){this.value=value;this.name=name;}@OverridepublicintgetValue(){returnvalue;}@OverridepublicStringgetName(){returnname;}}3.2编写MyBatisxml我们先把上面提到的SQL放在MyBatis的xml文件中:
<selectid="listWomanUsers"resultType="cn.houtaroy.test.entities.UserEntity">selectid,name,gender,emailfromt_userwheregender=2</select>下一步将2改为引用枚举的值:
<selectid="listWomanUsers"resultType="cn.houtaroy.test.entities.UserEntity">selectid,name,gender,emailfromt_userwheregender='${@cn.houtaroy.test.enums.Gender@WOMAN.value}'</select>${}是直接替换
@className@method(args)是调用类的静态方法,@className@field是调用类的静态属性
枚举使用的就是@枚举类@枚举值.value
3.3小坑有一种特殊情况,枚举是内部类,例如Gender在UserEntity中:
publicclassUserEntity{privateStringid;privateGendergender;publicenumGenderimplementsValueNameEnum{//...枚举代码}}这种情况如果我们书写成:${@cn.houtaroy.test.entities.UserEntity.Gender@WOMAN.value},会报无法解析到枚举的错误
这时我们需要使用$,它的含义是内部类调用:UserEntity$Gender@WOMAN.value
2024-09-19
mengvlog 阅读 7 次 更新于 2025-07-19 08:14:17 我来答关注问题0
  • Mybatis 2预设情景系统存在用户信息表t_user,其中记录性别的字段为gender,我们需要编写一个查询全部女性用户的方法 其中性别需要使用枚举,1为男性,2为女性,-1为未知 简单的查询SQL如下:selectid,name,gender,emailfromt_userwheregender=2可如果直接使用上面的SQL是存在一定问题的:后期如果将gender枚举中女...

  •  文暄生活科普 java(springboot) mybatis 数据权限详细实现(图文)

    1. **初始化与依赖配置**:创建Spring Boot项目,添加MyBatis Plus依赖和其他必要的工具类包。选择合适的数据库和字符集,确保能高效处理多语言环境下的数据。2. **数据库设计**:构建数据库表结构,确保权限信息能够以结构化方式存储。使用SQL脚本导入数据,实现基础数据的添加和测试。3. **权限验证...

  •  翡希信息咨询 实战SpringBoot(5)关于Mybatis中Date类型字段的映射处理

    在SpringBoot中使用Mybatis处理Date类型字段的映射,可以按照以下步骤进行:确认Java类中的日期字段类型:初始时,User类中的createDate和updateDate字段可能是java.util.Date类型。但为了提高时间处理的精度和可读性,建议修改为java.time.LocalDateTime类型。修改User类中的日期字段类型:将User类中的createDate...

  •  阿暄生活 MyBatis好帮手,一款功能强大的IDEA插件,帮你节省90%代码量

    安装Intellij最新插件MybatisCodeHelper,版本为2.8.1191201。使用方法:在IDEA顶部菜单选择Tools > MybatisCodeHelper > Activation > OfflineActivation,然后在offline key框输入任意字符串进行激活。数据类型设置:当数据库使用tinyInt或smallInt类型时,生成的Java类型默认是byte和short。为避免操作麻烦,可以...

  •  翡希信息咨询 java mybatis insert的时候Integer的类型是空值

    当Integer类型的字段值为null时,MyBatis默认不会报空指针异常,但为了确保数据插入的正确性,最好在映射文件中对该情况进行处理。可以通过在SQL语句中使用COALESCE函数或数据库特有的空值处理函数来确保null值被正确处理。但在大多数情况下,直接插入null值到Integer字段是可行的,只要数据库表结构允许该字段...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部