关于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);
            }  
        };  
    }  
}  

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

相关文章

  • SpringBoot中集成日志的四种方式

    SpringBoot中集成日志的四种方式

    在开发中,日志记录是保障应用程序健壮性、可维护性的重要手段,通过日志,我们可以记录系统的运行状态、捕获异常并进行调试,Spring Boot 默认使用的是 Logback,但你也可以根据需求选择其他框架,以下是几种常用的日志集成方法,需要的朋友可以参考下
    2024-10-10
  • SpringCloud搭建Eureka服务模块的过程

    SpringCloud搭建Eureka服务模块的过程

    Eureka在分布式系统中起到了连接各个微服务的纽带作用,使得服务之间的交互变得更加灵活、可靠,本文将深入探讨如何使用Spring Cloud,逐步引导读者完成Eureka服务模块的搭建,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • JAVA中通过Redis实现延时任务demo实例

    JAVA中通过Redis实现延时任务demo实例

    Redis在2.0版本时引入了发布订阅(pub/sub)功能,在发布订阅中有一个channel(频道),与消息队列中的topic(主题)类似,可以通过redis的发布订阅者模式实现延时任务功能,实例中会议室预约系统,用户预约管理员审核后生效,如未审批,需要自动变超期未处理,使用延时任务
    2024-08-08
  • Java面试题冲刺第二十六天--实战编程

    Java面试题冲刺第二十六天--实战编程

    这篇文章主要为大家分享了最有价值的三道java实战面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • spring cloud-zuul的Filter使用详解

    spring cloud-zuul的Filter使用详解

    这篇文章主要介绍了spring cloud-zuul的Filter使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • SpringCloud微服务架构升级汇总

    SpringCloud微服务架构升级汇总

    这篇文章主要介绍了SpringCloud微服务架构升级汇总,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值,需要的朋友可以参考下
    2019-06-06
  • Java SimpleDateFormat中英文时间格式化转换详解

    Java SimpleDateFormat中英文时间格式化转换详解

    这篇文章主要为大家详细介绍了Java SimpleDateFormat中英文时间格式化转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Spring Boot 整合 MyBatis 连接数据库及常见问题

    Spring Boot 整合 MyBatis 连接数据库及常见问题

    MyBatis 是一个优秀的持久层框架,支持定制化 SQL、存储过程以及高级映射,下面详细介绍如何在 Spring Boot 项目中整合 MyBatis 并连接数据库,感兴趣的朋友一起看看吧
    2025-03-03
  • Spring Boot实现第一次启动时自动初始化数据库流程详解

    Spring Boot实现第一次启动时自动初始化数据库流程详解

    在现在的后端开发中,只要是使用关系型数据库,相信SSM架构(Spring Boot + MyBatis)已经成为首选,本文就以Spring Boot + MyBatis为例,使用MySQL作为数据库,完成数据库初始化功能,文中有详细的代码示例,需要的朋友可以参考下
    2023-05-05
  • JAVA设计模式----建造者模式详解

    JAVA设计模式----建造者模式详解

    这篇文章主要为大家详细介绍了java实现建造者模式Builder Pattern,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论