前言
作者最近使用mybatis写sql查询,xml中查询某表记录,使用
<!-- 查询列表 -->
<select id="queryList" parameterType="com.mrcoder.query"
resultType="map">
select name, category from product
</select>
突然发现,返回的list,居然少了category这个字段,仔细一看,发现数据库中该值为null.
解决
当xml写sql时, resultType="map", mybatis默认会将值为null的字段不返回,这就导致了,你明明查询可能是5个字段,但是因为某些字段的值为null,最终返回的字段小于5个.
方案一(使用实体类作为resultType)
意思就是你定义一个实体类作为返回类型,这样null值也会填充实体对象,就不会出现这样情况.
方案二(修改配置)
- 如果你是使用xml配置的mybatis,则加上以下配置
<?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>
<settings>
<!--解决,查询返回结果含null没有对应字段值问题-->
<setting name="callSettersOnNulls" value="true"/>
</settings>
</configuration>
- 如果你使用了配置类来配置mybatis的,则加上以下代码
或者
MybatisConfig.java:
configuration.setCallSettersOnNulls(true);
项目地址
https://github.com/MrCoderStack/SpringBootDemo
网友评论