侧边栏壁纸
博主头像
宁静致远博主等级

行动起来,活在当下

  • 累计撰写 14 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Mybatis解决查询返回Map类型时值为null的字段没有在Map结果集中的问题

Administrator
2024-03-27 / 0 评论 / 0 点赞 / 5 阅读 / 1714 字

Mybatis解决查询返回Map类型时值为null的字段没有在Map结果集中的问题

前期描述:

Mybatis早前的版本(如3.1.2)的设计中,如果一个结果集中的字段返回值是null,那么就不会给字段设置值,如果返回的是Map作为结果集接收对象,那么Map中不会包含null的字段

在后期的版本中,如果是开启自动映射配置(默认autoMappingBehavior只要不是NONE,默认即可),自动映射时只要返回值不是原始数据类型(boolean,int等等)且返回值为null,那么字段就设置为null,如果结果集是map,空值字段照样返回;

如果没有开启自动映射的情况下,返回值不是原始数据类型且返回值为null时,如果开启了callSettersOnNulls为true,就会返回空的键值,默认是false,不会返回。

解决办法:

1. 修改Mybatis返回值类型(resultType=""),使用实体类进行接收

2. 对于springboot集成.mybatis/mybatisplus配置,修改sqlSessionFactory的配置

MybatisConfiguration configuration = new MybatisConfiguration();		configuration.setCallSettersOnNulls(true);sqlSessionFactory.setConfiguration(configuration);

3.在mybatis-config配置文件中加上 

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"  	"http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>		<settings>         <setting name="callSettersOnNulls" value="true"/>    </settings>

或者

mybatis:  configuration:    call-setters-on-nulls: true

0

评论区