数据库里tinyint的值,返回时怎么用字符“是/否”代替?

新手上路,请多包涵

在用mybatis-plus的分页器,想要返回一个直接给前端显示的全字符串对象。其他值都是String或者使用join找到id对应的String,但是这个怎么转成是否呢?我想到的粗暴办法是再加一个表,单放两条,id=0 string = '否',id = 1 string = '是',然后join一下。但是这太丑了,感觉这两天写了好多太丑的逻辑了/(ㄒoㄒ)/~~

回复
阅读 2.7k
3 个回答

这种情况下,建议使用 MySQL 中 CASE WHEN 语句,你可以把它看做是 Java 语法中的 if

以你描述的情况举例:0 = 否、1 = 是

首先你得在你的实体类中,增加一个类型为 String 的字段,用来接收这个转换后的值

你用了 mybatis-plus,那么记得在该字段上面加上 @TableField(exist = false) 这个注解,以表示当前属性不是数据库的字段

SQL 部分:

CASE 字段名 
    WHEN 0 THEN '否' 
    WHEN 1 THEN '是' 
END AS 字段名(String)

有关更详细的 CASE WHEN 语句用法,建议你在互联网搜索学习一下

可以看下若依系统开源的,是有字典表统一管理的,前后端分离。
http://vue.ruoyi.vip/system/d...
image.png
image.png

简单来说就是后端返回
数据 data = {sex:1} 和字典 dic = {1:"男",2:"女"}。
然后前端匹配
dic[data.sex]
输出就是 “男”了


业务复杂,需要很多对象的。

https://www.jianshu.com/p/d9c...
Java中的PO、VO、DTO、BO、POJO、BO/DO、DAO
image.png

顺带再补一个更有意思的实现方式,适用场景:静态字典数据,即字典内容严密切合业务,不会随业务变动

Mybatis查询出的内容,可以自动序列化成枚举对象,利用Jackson的自定义枚举序列化就可以了,甚至可以写一个通用配置的枚举接口,上面用注解标注序列化、反序列化所使用的方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏