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

解决了繁琐的配置,让 mybatis 优雅的使用枚举属性!

修改表结构

ALTER TABLE `tb_user` ADD COLUMN `sex` INT ( 1 ) NULL DEFAULT 1 COMMENT '1-男,2-女' AFTER `deleted`;

定义枚举

public enum SexEnum implements IEnum<Integer> {

 MAN(1, "男"), WOMAN(2, "女");

 private int value;
 private String desc;

 SexEnum(int value, String desc) {
 this.value = value;
 this.desc = desc;
 }

 @Override
 public Integer getValue() {
 return this.value;
 }

 @Override
 public String toString() {
 return this.desc;
 }

}

配置

# 枚举包扫描
mybatis-plus.type-enums-package=cn.com.javakf.enums

修改实体

private SexEnum sex; // 性别,枚举类型

测试

插入

@Test
public void testInsert() {
 User user = new User();
 user.setUserName("diaochan");
 user.setPassword("123456");
 user.setAge(20);
 user.setName("貂蝉");
 user.setMail("diaochan@163.com");
 user.setVersion(1);
 user.setSex(SexEnum.WOMAN); // 使用的是枚举

 // 调用AR的insert方法进行插入数据
 boolean insert = user.insert();
 System.out.println("result => " + insert);
}

SQL

[main] [cn.com.javakf.mapper.UserMapper.insert]-[DEBUG] ==> Preparing: INSERT INTO tb_user ( user_name, password, name, age, email, version, sex ) VALUES ( ?, ?, ?, ?, ?, ?, ? )
[main] [cn.com.javakf.mapper.UserMapper.insert]-[DEBUG] ==> Parameters: diaochan(String), 123456(String), 貂蝉(String), 20(Integer), diaochan@163.com(String), 1(Integer), 2(Integer)
[main] [cn.com.javakf.mapper.UserMapper.insert]-[DEBUG] <==  Updates: 1
 Time:43 ms - ID:cn.com.javakf.mapper.UserMapper.insert
Execute SQL:
  INSERT
  INTO
    tb_user
    ( user_name, password, name, age, email, version, sex )
  VALUES
    ( 'diaochan', '123456', '貂蝉', 20, 'diaochan@163.com', 1, 2 )

[main] [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@44550792]
result => true

查询

@Test
public void testSelectById() {
 User user = new User();
 user.setId(11L);

 User user1 = user.selectById();
 System.out.println(user1);
}

SQL

[main] [cn.com.javakf.mapper.UserMapper.selectById]-[DEBUG] ==> Preparing: SELECT id,user_name,name,age,email AS mail,version,deleted,sex FROM tb_user WHERE id=? AND deleted=0
[main] [cn.com.javakf.mapper.UserMapper.selectById]-[DEBUG] ==> Parameters: 12(Long)
[main] [cn.com.javakf.mapper.UserMapper.selectById]-[DEBUG] <==   Total: 1
[main] [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@474c9131]
User(id=12, userName=diaochan, password=null, name=貂蝉, age=20, mail=diaochan@163.com, address=null, version=1, deleted=0, sex=女)

从测试可以看出,可以很方便的使用枚举了。

条件查询

@Test
public void testSelectBySex() {
 User user = new User();

 QueryWrapper<User> wrapper = new QueryWrapper<>();
 wrapper.eq("sex", SexEnum.WOMAN); // 查询性别为女的数据

 List<User> users = user.selectList(wrapper);
 for (User user1 : users) {
 System.out.println(user1);
 }
}

SQL

[main] [cn.com.javakf.mapper.UserMapper.selectList]-[DEBUG] ==> Preparing: SELECT id,user_name,name,age,email AS mail,version,deleted,sex FROM tb_user WHERE deleted=0 AND sex = ?
[main] [cn.com.javakf.mapper.UserMapper.selectList]-[DEBUG] ==> Parameters: 2(Integer)
[main] [cn.com.javakf.mapper.UserMapper.selectList]-[DEBUG] <==   Total: 1
 Time:15 ms - ID:cn.com.javakf.mapper.UserMapper.selectList
Execute SQL:
  SELECT
    id,
    user_name,
    name,
    age,
    email AS mail,
    version,
    deleted,
    sex
  FROM
    tb_user
  WHERE
    deleted=0
    AND sex = 2

[main] [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3a3b10f4]
User(id=12, userName=diaochan, password=null, name=貂蝉, age=20, mail=diaochan@163.com, address=null, version=1, deleted=0, sex=女)

到此这篇关于Mybatis-Plus通用枚举的使用详解的文章就介绍到这了,更多相关Mybatis-Plus通用枚举内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MybatisPlus中的删除和逻辑删除及区别介绍

    删除又分为逻辑删除和物理删除,那么它们有什么区别呢? 物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据. 逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为"被删除状态",之后在数据库中仍旧能看到此条数据记录. 在我们日常开发中,为了保留数据,经常会使用逻辑删除的方式进行数据删除,下面我们就来看看物理删除与逻辑删除怎么实现的吧 首先假设我有这样一张表 实体类: package com.atguigu.mybatis_plus.entity; import

  • mybatis-plus 表名添加前缀的实现方法

    1.使用mybatis-plus自身的查询构造去,只需要在全局配置中添加如下配置 mybatis-plus: mapper-locations: classpath:mappers/*Mapper.xml # mapper映射文件 global-config: db-config: table-prefix: tr_ 2.自定义sql语句中添加表名前缀 在yml文件中添加如下配置 mybatis-plus: mapper-locations: classpath:mappers/*Mapper.

  • mybatis-plus getOne和逻辑删除问题详解

    1.getOne 如果查询出的结果有多个,这时候会抛异常 这样就不用每次getOne的Wrapper后面还跟last("limit 1") 2.@TableLogic 就不用每次list查询的时候跟上 .eq("deleted",false)了 PS:下面再次强调下Mybatis-Plus中的逻辑删除 1. 需要在删除的字段上添加注解@TableLogic 2. 在配置文件中写上配置 mybatis-plus: global-config: db-config: l

  • MyBatisPlus中使用or()和and()遇到的问题

    在项目中使用MyBatisPlus中的or()查询时由于误用,导致查询数据不对,仅作记录. 写法一: LambdaQueryWrapper<Task> queryWrapper = new QueryWrapper<Task>().lambda(); queryWrapper .eq(Task::getUserId, "15") .eq(Task::getStatus, 2) .or() .eq(Task::getFileSize, 3251544304L);

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

    解决了繁琐的配置,让 mybatis 优雅的使用枚举属性! 修改表结构 ALTER TABLE `tb_user` ADD COLUMN `sex` INT ( 1 ) NULL DEFAULT 1 COMMENT '1-男,2-女' AFTER `deleted`; 定义枚举 public enum SexEnum implements IEnum<Integer> { MAN(1, "男"), WOMAN(2, "女"); private int v

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

    前言 最近在工作中遇到一个问题,在设计数据库的时候,我们有时候会把表里的某个字段的值设置为数字或者为英文来表示他的一些特殊含义.就拿设置成数字来说,假如1对应是学生,2对应是教师,在Java里面定义成这样的枚举,但是一般使用mybatis查出来的话,我们想要让它自动装换成我们想要的枚举,不需要再手动根据数值去判断设置成我们想要的枚举.要是实现这样的效果,那么我们就要用到mybatis的BaseTypeHandler了. BaseTypeHandler介绍 让我们来看看要继承BaseTypeHan

  • SpringBoot学习系列之MyBatis Plus整合封装的实例详解

    前言 MyBatis-Plus是一款MyBatis的增强工具(简称MP),为简化开发.提高效率,但我们并没有直接使用MP的CRUD接口,而是在原来的基础上封装一层通用代码,单表继承我们的通用代码,实现了单表的基础get.save(插入/更新).list.page.delete接口,使用Vo去接收.传输数据,实体负责与数据库表映射. 这样做的目的是与我们之前的那套jpa保持编码风格上的一致,当我们的通用接口不能满足要求时,应当先考虑使用MP的Service层CRUD接口,然后是Mapper的接口,

  • 设计模式系列之组合模式及其在JDK和MyBatis源码中的运用详解

    组合模式及其在JDK源码中的运用 前言组合和聚合什么是组合模式示例透明组合模式透明组合模式的缺陷安全组合模式 组合模式角色组合模式在JDK源码中的体现组合模式应用场景享元模式优缺点总结 前言 本文主要会讲述组合模式的用法,并会结合在JDK和MyBatis源码中的运用来进一步理解组合模式. 在编码原则中,有一条是:多用组合,少用继承.当然这里的组合和我们今天要讲的组合模式并不等价,这里的组合其实就是一种聚合,那么聚合和组合有什么区别呢? 组合和聚合 人在一起叫团伙,心在一起叫团队.用这句话来诠释组

  • SpringBoot在RequestBody中使用枚举参数案例详解

    前文说到 优雅的使用枚举参数 和 实现原理,本文继续说一下如何在 RequestBody 中优雅使用枚举. 本文先上实战,说一下如何实现.在 优雅的使用枚举参数 代码的基础上,我们继续实现. 确认需求 需求与前文类似,只不过这里需要是在 RequestBody 中使用.与前文不同的是,这种请求是通过 Http Body 的方式传输到后端,通常是 json 或 xml 格式,Spring 默认借助 Jackson 反序列化为对象. 同样的,我们需要在枚举中定义 int 类型的 id.String

  • Java Fluent Mybatis 项目工程化与常规操作详解流程篇 上

    目录 前言 Maven依赖 配置文件调整 Knife4j配置 添加必要实体 增/改 总结 前言 接着上一篇,上篇已经测试通过,成功添加了数据.那么这篇主要是继续上一个项目,将项目进行工程化包装,增加一些必要配置,并且生成增删改查接口. GitHub代码仓库:GitHub仓库 Maven依赖 增加了druid数据库连接池,所以之前的配置文件也需要调整,下面会发出来. <dependency> <groupId>cn.hutool</groupId> <artifac

  • MyBatis流式查询的使用详解

    目录 1.应用场景说明 2.模拟excel导出场景 1.创建海量数据的sql脚本 2.MyBatis流式查询 3.Excel通用导出工具类 1.Excel导入导出工具类 2.Excel数据读取监听器 3.Excel读取数据完成回调接口 4.拆分List集合工具类 4.测试结果 5.遗留问题待处理 1.应用场景说明 MyBatis preview: JDBC三种读取方式: 1.一次全部(默认):一次获取全部. 2.流式:多次获取,一次一行. 3.游标:多次获取,一次多行. 在开发中我们经常需要会遇

  • MyBatis Properties及别名定义实例详解

    上一篇我们介绍了mybatis的增删改查入门实例,我们发现在 mybatis-configuration.xml 的配置文件中,对数据库的配置都是硬编码在这个xml文件中,如下图,那么我们如何改进这个写法呢? 1.我们将 数据库的配置语句写在 db.properties 文件中 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssm jdbc.username=root jdbc.password=ro

  • java导出Excel通用方法的实例详解

    java导出Excel通用方法的实例详解 Java导出Excel通用方法,只需要一个list 集合.通用方法改进之处踊跃提出 package oa.common.utils; import java.io.OutputStream; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import java.lan

  • Mybatis velocity脚本的使用教程详解(推荐)

    可能很多童鞋都还不是很清楚在mybatis可以使用各种脚本语言来定义Mapper文件里面的动态SQL:目前mybatis支持的脚本语言有XML(默认的):Velocity和Freemarker三种.使用不同的脚本语言来完成Mapper文件的编写,第一是使用自己熟悉的脚本语言,第二是能够定义更多丰富的自定义指令来简化Mapper的开发,关于MyBatis支持脚本的原理分析,自定义脚本指令后面再写文章分析,本文先介绍mybatis中velocity脚本的使用方式. mybatis-velocity项

随机推荐