欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

mybatis返回map类型数据空值字段不显示的解决方案

时间:2022-07-26 10:04:04|栏目:JAVA代码|点击:

mybatis返回map数据空值字段不显示

查询sql添加每个字段的判断空

IFNULL(rate,'') as rate

ResultType利用实体返回

不用map

springMVC+mybatis查询数据

返回resultType=”map”时,如果数据为空的字段,则该字段省略不显示,可以通过添加配置文件,规定查询数据为空是则返回null。

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

spring-mybatis.xml

<!-- springMyBatis完美整合,添加mybatis的配置映射文件 -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:mybatis-configuration.xml"/>
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:mapping/*.xml"></property>
  </bean>

如果想要配置rate的默认值,例如“”字符串,则可以建立一个类,实现Mybatis的TypeHandler接口

public class EmptyStringIfNull implements TypeHandler<String> {
    @Override
    public String getResult(ResultSet rs, String columnName) throws SQLException {
     return (rs.getString(columnName) == null) ? "" : rs.getString(columnName); 
    }
    @Override
    public String getResult(ResultSet rs, int columnIndex) throws SQLException {
     return (rs.getString(columnIndex) == null) ? "" : rs.getString(columnIndex);
    }
    @Override
    public String getResult(CallableStatement cs, int columnIndex)   throws SQLException {
     return (cs.getString(columnIndex) == null) ? "" : cs.getString(columnIndex);
    }
    @Override
    public void setParameter(PreparedStatement ps, int arg1, String str, JdbcType jdbcType) throws SQLException { }}

在sql.xml文件定义与使用如下如下

<resultMap id="find" type="java.util.LinkedHashMap">
    <result property="name" column="name" />
    <result property="phone" column="phone" />
    <result property="rate" column="rate" typeHandler="com.mybatis.EmptyStringIfNull"/>
</resultMap>

mybatis返回map空值未返回字段

mybatis 开启CallSettersOnNulls

@Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception
{
    SqlSessionFactoryBean sqlSessionFactoryBean = new      SqlSessionFactoryBean();
    sqlSessionFactoryBean.setDataSource(dataSource());
    Configuration configuration = new .Configuration();
    configuration.setCallSettersOnNulls(true);//map返回空字段消失问题
    PageInterceptor pagePlugin = new PageInterceptor();
    JalorResultSetInterceptor jalorResultSetPlugin = new JalorResultSetInterceptor();
    ProgramInterceptor programPlugin = new ProgramInterceptor();
    //添加插件
    sqlSessionFactoryBean.setPlugins(new Interceptor[] {pagePlugin, jalorResultSetPlugin, programPlugin});
    sqlSessionFactoryBean.setConfiguration(configuration);
    return sqlSessionFactoryBean.getObject();
}

上一篇:springboot入门之profile设置方式

栏    目:JAVA代码

下一篇:Java 数据结构与算法系列精讲之单向链表

本文标题:mybatis返回map类型数据空值字段不显示的解决方案

本文地址:http://www.codeinn.net/misctech/208996.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有