springMVC+mybatis查询数据,返回resultType=”map”时,如果数据为空的字段,则该字段省略不显示的解决方案

时间:2022-02-09 19:35:40

springMVC+mybatis查询数据,返回resultType=”map”时,如果数据为空的字段,则该字段省略不显示。


环境:SpringMVC+mybatis


1、Controller代码:

@RequestMapping(value = "/query")
@ResponseBody
public ResponseEntity<JsonResult> paymentPay(String sql) {
List<Map<String, Object>> queryResult = commonQueryService.query(sql);
return ControllerHelper.returnJSONResult(true, "查询成功", queryResult);
}

2、Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.baoogu.scm.repository.mapper.systemConfig.CommonQueryMapper">

<select id="query" resultType="java.util.Map">
${sql}
</select>

</mapper>


3、sqlmap-config.xml或者 spring-mybatis.xml(名称不同而已)


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
<!-- 不再忽略ResponseEntity返回时json对象属性属性,即不自动将值为null的对象属性忽略。
             例如:t_user表中的email多数为空,返回时User.email属性会被忽略,添加后就不会忽略了。 -->	<settings>		<setting name="callSettersOnNulls" value="true" />	</settings>		<typeAliases>		<typeAlias alias="hashMap" type="java.util.HashMap"/>	</typeAliases>	<typeHandlers>		<typeHandler handler="com.baoogu.scm.core.orm.mybatis.EnumDataTypeHandler" javaType="java.lang.Enum"/>	</typeHandlers>	</configuration>

注:红色部分为添加部分,主要部分。


4、数据库结构大致如下:

CREATE TABLE `t_user` (
`id` bigint(20) NOT NULL DEFAULT '0' COMMENT '主键',
`user_name` varchar(100) NOT NULL COMMENT '登录用户名',
`password` varchar(32) NOT NULL COMMENT '密码',
`mobile` varchar(15) DEFAULT NULL COMMENT '手机号',
`email` varchar(255) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户表';

不添加时,返回前台的结果大致如下:

springMVC+mybatis查询数据,返回resultType=”map”时,如果数据为空的字段,则该字段省略不显示的解决方案

可以发现,并没有email字段或属性。因为被自动省略了。

但是添加

<setting name="callSettersOnNulls" value="true" />
以后,如下图:

springMVC+mybatis查询数据,返回resultType=”map”时,如果数据为空的字段,则该字段省略不显示的解决方案





参考: http://blog.csdn.net/lulidaitian/article/details/70941769