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 阅读 39 次 更新于 2025-10-29 13:01:06 我来答关注问题0
  • Mybatis 2预设情景系统存在用户信息表t_user,其中记录性别的字段为gender,我们需要编写一个查询全部女性用户的方法 其中性别需要使用枚举,1为男性,2为女性,-1为未知 简单的查询SQL如下:selectid,name,gender,emailfromt_userwheregender=2可如果直接使用上面的SQL是存在一定问题的:后期如果将gender枚举中女...

  •  深空见闻 mybatis 类型转换配置

    MyBatis类型转换配置主要涉及typeAliases和typeHandlers的配置。typeAliases配置:作用:为Java类型设置一个短的名字,以减少类完全限定名的冗余。它只和XML配置有关,存在的意义在于简化配置。配置方式:可以使用注解的方式来配置别名,这样在XML配置中就可以使用简短的别名来代替类的完全限定名。typeHandlers配...

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

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

  •  深空见闻 mybatis point 类型赋值

    在MyBatis中,对MySQL的POINT类型进行赋值可以通过使用注解、Java对象以及XML配置文件等多种方式实现。一、使用注解方式 在MyBatis的Mapper接口中,可以利用注解来编写插入语句,并通过MySQL的ST_GeomFromText函数将经度和纬度转换为POINT类型。例如,使用@Insert注解编写一个插入方法,其中location字段使用ST_Geo...

  •  文暄生活科普 面试官:mybatis中的typehandler你用过吗?

    Mybatis是一个高效的ORM框架,它能将Java对象与数据库数据进行映射,实现数据之间的转换。在Mybatis中,TypeHandler是一个关键概念,其主要功能是实现Java类型与JDBC类型之间的转换。本文将以一个生活案例来解释TypeHandler的使用方法,并通过代码示例进行深入解析,最后进行总结。让我们以食物辣度为例来理解...

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

Java相关话题

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