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 阅读 30 次 更新于 2025-09-09 17:33:48 我来答关注问题0
  •  翡希信息咨询 java(springboot) mybatis 数据权限详细实现(图文)

    JavaMyBatis数据权限的详细实现主要包括以下关键步骤:初始化与依赖配置:创建Spring Boot项目,并添加MyBatis Plus依赖以及其他必要的工具类包。选择合适的数据库和字符集,确保系统能够高效处理多语言环境下的数据。数据库设计:设计数据库表结构,用于存储用户、角色、权限等信息,确保权限信息能够以结构化方...

  •  翡希信息咨询 细节决定成败:探究Mybatis中javaType和ofType的区别

    在Mybatis中,javaType和ofType的区别主要在于它们分别用于配置一对一和一对多的关联关系。javaType:用途:用于配置一对一的关联关系。即当查询一个实体对象时,同时查询其关联的单个对象。使用场景:在配置文件中,当需要指定关联对象的类型时,使用javaType。要求:需确保查询的关联对象与配置的类型完全一...

  •  翡希信息咨询 [Mybatis] 使用mybatis适配多数据库

    1. DatabaseIdProvider的原理: Mybatis利用java.sql.DatabaseMetaData#getDatabaseProductName方法返回的数据库产品名称,通过DatabaseIdProvider识别并切换到对应数据库的处理逻辑。 这样可以解决XML中SQL语句针对不同数据库的适配问题。2. 实现方法:方法一:使用Java静态方法注入:定义一个静态方法,该方法...

  •  翡希信息咨询 关于mybatis的使用之怎么传递参数总结

    HashMap:可以使用HashMap来传递多个参数,其中键为参数名,值为参数值。Java自定义类型:如POJO等自定义的Java对象,可以通过对象的属性来传递参数。参数的引用方式:{parameterName}:预编译处理:这种方式会对参数进行预编译处理,防止SQL注入攻击。占位符替换:MyBatis会将#{parameterName}替换为相应的占...

  •  深空见闻 mybatis point 类型赋值

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

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

Java相关话题

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