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

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='用户表';

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


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

但是添加

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






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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值