提示:本文章作为本人记录,仅供参考
问题背景
前段时间和公司其他项目组对接,需要进行推送数据,遇到个小问题,记录下一个简单的工具类。
我们是通过最常见的json进行接口调用,我这边会将字符串转为实体对象,再进行mybatis的新增或修改,然后就发现,当某个字段赋值为空的时候,他们的系统不会传给我字段,或者传为null,而我这边mapper.xml都是这样判断的:
<if test="name != null" >
and name = #{name}
</if>
<if test="sex != null" >
and sex = #{sex}
</if>
因此当某个字段重新赋值为空的时候,就不会进行更新,导致两边数据产生了差异,因为涉及到的mapper比较多,也就懒得改,就使用了一个简单的工具类。
代码如下:
public static void converEntityNullToString(Object obj)
{
try
{
Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field f : declaredFields)
{
//设置属性可以访问
f.setAccessible(true);
Object val = f.get(obj);
//字段类型
String type = f.getType().toString();
if (type.endsWith("String"))
{
if ("" != val && null == val)
{
f.set(obj,"");
}
}
}
}
catch (Exception ex)
{
log.error(ex.getMessage(),ex);
}
}
这样只需要在修改之前处理下实体就OK了。
EntityUtil.converEntityNullToString(UserVo);
总结
提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单记录了本人的工作日常,仅供参考,有任何的疑问或者建议,欢迎大家在下方留言交流,谢谢。