Java 求解:使用 mybatis 的一个小小问题

2019-03-21 13:52:52 +08:00
 13192262269
问题:
mybatis 的 resultType 返回类型 为 hashmap ,

当获取到的 value 是 null 时,没有返回 key

想要效果:

当获取到的 value 是 null 时,依然返回 key

eg:
问题:
"data":{
}

效果:
"data":{
"key":"test",
value:""
}

怎么处理?请问一下
1660 次点击
所在节点    程序员
11 条回复
lyusantu
2019-03-21 14:00:21 +08:00
用 hashmap 作为返回值的时候,牵扯到一系列的封装,具体实现可以查阅资料参考一下
重点是在这个封装的过程中,如果字段对应的值是空的,这个字段就会被忽略掉
13192262269
2019-03-21 14:01:23 +08:00
@lyusantu #1 对是的,当字段对应的值是空的,这个字段就会被忽略掉,如何做到不被忽略
JinyAa
2019-03-21 14:03:20 +08:00
ifnull(xxxx,'')
CoderGeek
2019-03-21 14:03:23 +08:00
null 的话会被忽略 = =
boris1993
2019-03-21 14:03:54 +08:00
SQL 里就把 null 替换成""不知道是否可行
roothub
2019-03-21 14:11:37 +08:00
可以在代码里或者 xml 里配置 mybatis 的全局属性,加上以下设置
<!--当 mybatis 没有用实体返回而是用 Map 时,字段为 null 也映射到结果集中-->
<setting name="callSettersOnNulls" value="true"/>
13192262269
2019-03-21 14:21:44 +08:00
@lyusantu #1 已解决,用 6 楼的方法
@JinyAa #3 最好不要这样子,我试过,用这方法,返回的 value 全部被转换成 String(int,data 类型会丢失)
@CoderGeek #4 是的,mybatis 的 3.2 以上版本都会忽略
@boris1993 #5 最好不要这样子,我试过,用这方法,返回的 value 全部被转换成 String(int,data 类型会丢失)
@roothub #6 已解决谢谢,不过,不同的工程会有一点不同的去设置 callSettersOnNulls value=true
13192262269
2019-03-21 14:23:14 +08:00
@roothub #6 没必要每行都配,代码量大的话,不好,可以设为全局属性
13192262269
2019-03-21 14:23:31 +08:00
已结贴!!!
boris1993
2019-03-21 14:26:32 +08:00
@13192262269 #7 学习一个
13192262269
2019-03-21 14:50:38 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/546977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX