`

mybatis处理枚举

阅读更多
前情:
1.首先,枚举我直接使用中文。省得码表翻译。
2.生成表,以及简单操作时,使用JPA,数据库会存储ordinal。
3.复杂查询使用mybaties,两者混用。

代码:
1.枚举
public enum InfoType implements EnumTypeInterface {
    下载信息,
    试用及购买信息;
}
public interface EnumTypeInterface {
}
public enum EnumTypes{
    InfoType("文本信息类型"),
    OrderStatusType("订单状态类型");

    private String desc;
    EnumTypes(String desc) {
        this.desc = desc;
    }

    public String desc() {
        return this.desc;
    }
}

定义枚举接口EnumTypeInterface,目的是结合EnumTypes提供一个查询枚举值的API接口:
@Api(description = EnumsController.DESC)
@RestController
@RequestMapping("/enums")
public class EnumsController {
    public static final String DESC = "类型参数";

    public static final String enumPkg = "api.xxx.com.petstore.enumeration";

    @ApiOperation(DESC+"列表")
    @GetMapping("/{typeName}")
    public List<String> getEnumList(@PathVariable EnumTypes typeName) throws Exception {
        Class<Enum> enumClass;
        try {
            enumClass = (Class<Enum>)Class.forName(String.join(".", enumPkg, typeName.toString()));
            Method values = enumClass.getMethod("values");
            EnumTypeInterface[] interfaces = (EnumTypeInterface[])values.invoke(null);
            return Arrays.stream(interfaces).map(Object::toString).collect(Collectors.toList());
        } catch (ClassNotFoundException e) {
            throw new QcNotFoundException(DESC,typeName);
        }
    }
}

=================================================
好了,上重点:
<resultMap id="orderGridDtoMap" type="api.xxx.com.petstore.dto.OrderGridDto">
...
<result column="status" jdbcType="BIT" property="status" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/>
<result column="transaction_id" jdbcType="VARCHAR" property="transactionId"/>
...
</resultMap>

另外在查询条件时,直接.ordinal属性即可:
...	
	<if test="status!=null">
		and o.status = #{status.ordinal}
	</if>
</where>



分享到:
评论

相关推荐

    mybatis处理枚举类的简单方法

    MyBatis处理枚举类的简单方法 MyBatis是一个流行的持久层框架,提供了很多便捷的方法来处理数据库交互,然而,在处理枚举类时,MyBatis提供的两个枚举处理类:`EnumOrdinalTypeHandler`和`EnumTypeHandler`,却存在...

    1.springbood+mybatis项目demo2.mybatis自定义枚举类型的转换器以及各种使用场景

    本项目示例"1.springboot+mybatis项目demo2.mybatis自定义枚举类型的转换器以及各种使用场景"着重展示了如何在Spring Boot应用中集成MyBatis,并利用MyBatis处理枚举类型的数据。 首先,我们来了解Spring Boot。...

    mybatis入门实战之枚举类型

    本文将深入探讨在MyBatis中如何使用枚举类型,并通过实际的项目"mybatis入门实战之枚举类型"进行讲解。这个项目提供了一个简单的demo,非常适合初学者了解并实践MyBatis的TypeHandler机制。 首先,我们要明白枚举...

    springboot--mybatis枚举自动转换实现.rar

    在Spring Boot和MyBatis的集成应用中,我们经常需要处理枚举类型的数据。枚举在编程中是一种常用于表示固定数量和含义的值的类型,它可以提高代码的可读性和可维护性。然而,当涉及到数据库交互时,枚举与数据库中的...

    boot+mybatis、mybatis中枚举转换器、前后端分离项目统一返回格式、boot集成quraz框架实现定时任务

    在MyBatis的配置中注册这个类型处理器,确保在处理枚举类型的字段时能正确映射。 3. **前后端分离项目的统一返回JSON格式**: 在前后端分离的架构中,后端作为API服务器,需要提供统一的JSON格式响应,以便前端...

    mybatis中实现枚举自动转换方法详解

    在MyBatis中,枚举类型的自动转换是一个常见的需求,特别是在处理数据库字段与Java枚举类型之间转换时。本文将详细介绍如何在MyBatis中实现枚举的自动转换,以便在查询结果返回时能直接得到对应的枚举实例,无需额外...

    Mybatis中自定义TypeHandler处理枚举详解

    在Mybatis的配置中,我们需要注册这个自定义的TypeHandler,以便Mybatis在处理枚举时能够正确地调用我们的`DisplayedEnumTypeHandler`。配置如下: ```xml ``` `CustomDisplayedEnumTypeHandler` 类需要实现`...

    Mybatis-Plus通用枚举的使用详解

    在处理枚举类型时,Mybatis-Plus提供了通用枚举(Generic Enum)的功能,使得枚举在数据库交互中的使用更加优雅。 在数据库设计中,我们常常会遇到一些具有固定选项的字段,如性别、状态等,这些字段通常可以使用...

    mybatis-plus使用@EnumValue处理枚举类型的示例代码

    在MyBatis-Plus中,`@EnumValue`是一个用于处理枚举类型的注解,它使得枚举可以与数据库中的字段进行映射。这个注解主要用于解决枚举类型在序列化和反序列化过程中的问题,确保数据在数据库和Java对象之间能够正确地...

    spring boot mybatis枚举映射示例代码

    接下来,我们需要创建一个自定义的枚举处理器,这个处理器会处理枚举到整型的转换。这里我们创建了一个名为`UniversalEnumHandler`的类,它继承自MyBatis的`BaseTypeHandler`,并处理特定类型的枚举: ```java @...

    mybatis入门之typeHanlder的三种使用案例

    本文将深入探讨MyBatis中的TypeHandler,特别是`EnumOrdinalTypeHandler`和`EnumTypeHandler`,以及如何自定义TypeHandler来处理枚举类与数据库字典的映射。我们将通过三个具体的使用案例进行讲解。 首先,让我们...

    MyBatis3.2.2中文官方文档

    #### 处理枚举(HandlingEnums) MyBatis对枚举类型提供了一定的支持,可以通过配置文件自定义枚举类型的映射方式。 #### 对象工厂(objectFactory) 对象工厂用于创建结果对象的实例。MyBatis在设置结果集属性时...

    Mybatis plus无介绍快使用,枚举变量的使用(七)

    在查询时,Mybatis Plus提供了方便的方法来处理枚举类型。例如,我们想要查找所有状态为`ACTIVE`的用户: ```java List&lt;User&gt; activeUsers = userMapper.selectList(new QueryWrapper().eq("status", StatusEnum....

    自定义mybatis流程分析.rar

    1. 自定义TypeHandler:当MyBatis内置的TypeHandler无法满足需求时,可以编写自定义TypeHandler,覆盖默认的类型转换逻辑,如处理自定义枚举类型、复杂对象等。 2. 自定义Executor:Executor是MyBatis的执行器,...

    尚硅谷Mybatis视频教程81-88

    这两集将引导我们了解如何定义并使用自定义的类型处理器,以更灵活地处理枚举类型。 存储过程是数据库中常用的功能,86集和85集详细介绍了Mybatis如何调用存储过程,包括在Oracle数据库中创建带游标的存储过程,这...

    MyBatisDemo:MyBatis 框架知识案例

    1.创建第一个 MyBatis 程序案例 2.MyBatis 配置文件案例 3.MyBatis 关联查询与懒加载案例 4.MyBatis 缓存案例 5.MyBatis 动态 SQL 标签案例 6.MyBatis Generator 、...7.MyBatis 自定义 typeHandler 处理枚举类型案例

    MyBatis(ibatis)学习文档.docx

    MyBatis的枚举类型处理器,用于处理Java枚举类型与数据库表之间的映射关系。 object, MyBatis的对象是指Java对象,用于表示业务逻辑中的实体对象。MyBatis的对象可以与数据库表之间建立映射关系,从而实现数据的...

    mybatis-plus练习项目包括Mapper的配置以及枚举配置等 简单项目,仅仅是用法

    - **枚举配置**:MyBatis-Plus支持枚举类型作为字段,这在处理状态、性别等固定值时非常方便。枚举类需实现`IEnum`接口,如`SexEnum implements IEnum&lt;Integer&gt;`,并定义`getValue()`和`getDesc()`方法。在Mapper中...

    mybatis3--4.resultMap高级映射

    4. 枚举类型映射:可以使用`&lt;discriminator&gt;`元素根据某个字段的值来决定使用哪个ResultMap,常用于处理枚举类型的字段。 5. TypeHandler:自定义数据类型的转换,比如日期、时间、自定义对象等,可以通过Type...

Global site tag (gtag.js) - Google Analytics