关于mybatis resulttype 返回值异常的问题

 更新时间:2021年08月25日 15:10:24   作者:光滑的秃头  
这篇文章主要介绍了mybatis resulttype 返回值异常的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis resulttype 返回值异常

在使用mybatis时。resulttype返回自定义的类时,可能返回的类中字段数据存在缺失。

例如:resulttype = "student" 但是当中有些字段为空

原因是因为数据库字段和实体类字段不对应导致的。 mybatis底层 查询数据返回会更据数据库的字段和实体类的字段进行匹配,不区分大小写。但是字段不一样就无法传递值

例如:数据库字段为:s_name 实体类字段为 name

处理方式1:

在查询时添加别名 select s_name as name from student 别名对于实体类当中的字段。

处理方式2:

返回一个resultMap map配置当中指定数据库中的列和实体类的类进行对应

<id column="s_name" jdbcType="VARCHAR" property="name"/>

mybatis resultType="map"的常见问题

在配置数据源的配置文件中,配置Mybatis的SqlSessionFactoryBean

一、map的key值 与select的字段顺序的不一致问题

解决方法:

resultType="map" 修改为 resultType="java.util.LinkedHashMap"

二、值为null的返回map中没相应的key

解决方法:

1.查询字段使用ifnull函数(可空字段较多时,不推荐)

2.修改mybatis配置

springmvc:

创建mybatis-config.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>
    <settings> 
        <!-- 当返回数据类型为map,设置callSettersOnNulls会把值为null的key也返回 -->
        <setting name="callSettersOnNulls" value="true"/> 
    </settings>
</configuration>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:/META-INF/spring/mybatis-config.xml" />
    <property name="mapperLocations">
    <array>
      <value>classpath*:/com/xxx/mapper/*.xml</value>
    </array>
  </property>
</bean>

springboot:

配置文件:mybatis.configuration.call-setters-on-nulls=true

注解方式:

import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
  
/** 
 * mybatis 注解版  
 * 
 */  
@Configuration  
public class MybatisConfig {  
  
    @Bean  
    public ConfigurationCustomizer configurationCustomizer() {  
        return new ConfigurationCustomizer() {  
  
            @Override  
            public void customize(org.apache.ibatis.session.Configuration configuration) {  
                configuration.setMapUnderscoreToCamelCase(true);//设置驼峰命名规则 
                configuration.setCallSettersOnNulls(true);
            }  
        };  
    }  
}  

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一文彻底搞定Java哈希表和哈希冲突

    一文彻底搞定Java哈希表和哈希冲突

    本文介绍了什么是哈希表?什么是哈希函数?什么是哈希冲突?三个问题的解决方案,文中有非常详细的代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • MyBatis元素resultMap介绍及使用详解

    MyBatis元素resultMap介绍及使用详解

    这篇文章主要介绍了MyBatis元素resultMap介绍及使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • idea鼠标控制放大缩小的操作

    idea鼠标控制放大缩小的操作

    这篇文章主要介绍了idea鼠标控制放大缩小的操作教程,具有很好的参考价值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 一篇文章弄懂Java8中的时间处理

    一篇文章弄懂Java8中的时间处理

    Java8以前Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限,下面这篇文章主要给大家介绍了关于Java8中时间处理的相关资料,需要的朋友可以参考下
    2022-01-01
  • Java利用AlphaComposite类合并图像

    Java利用AlphaComposite类合并图像

    这篇文章主要介绍了Java利用AlphaComposite类合并图像,帮助大家更好的利用Java处理图像,感兴趣的朋友可以了解下
    2020-10-10
  • mybatis查询字段为null设置为0的操作

    mybatis查询字段为null设置为0的操作

    这篇文章主要介绍了mybatis查询字段为null设置为0的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring系列之事物管理

    Spring系列之事物管理

    这篇文章主要介绍了Spring系列之事物管理,文中通过示例代码介绍的非常详细,对大家学习或者使用spring方面知识具有一定的参考学习价值,需要的朋友们一起学习学习吧
    2021-09-09
  • Spring Boot系列教程之7步集成RabbitMQ的方法

    Spring Boot系列教程之7步集成RabbitMQ的方法

    RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。下面这篇文章主要给大家介绍了关于Spring Boot之7步集成RabbitMQ的相关资料,需要的朋友可以参考下
    2018-11-11
  • 如何理解和运用ClassLoader

    如何理解和运用ClassLoader

    这篇文章主要介绍了如何理解和运用 ClassLoader,帮助大家更好的理解和使用JVM,感兴趣的朋友可以了解下
    2021-01-01
  • java实现大文本文件拆分

    java实现大文本文件拆分

    这篇文章主要为大家详细介绍了java实现大文本文件拆分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05

最新评论