服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 关于mybatis resulttype 返回值异常的问题

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

2021-12-03 14:55光滑的秃头 Java教程

这篇文章主要介绍了mybatis resulttype 返回值异常的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis resulttype 返回值异常

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

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

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

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

处理方式1:

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

处理方式2:

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

?
1
<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

?
1
2
3
4
5
6
7
8
9
<?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>
?
1
2
3
4
5
6
7
8
9
<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

注解方式:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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);
            
        }; 
    
}

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

原文链接:https://blog.csdn.net/ycf921244819/article/details/80487599

延伸 · 阅读

精彩推荐
  • Java教程Spring Boot Maven插件使用详解

    Spring Boot Maven插件使用详解

    这篇文章主要为大家详细介绍了Spring Boot Maven插件使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    素文宅7982021-01-28
  • Java教程WebSocket整合SSM(Spring,Struts2,Maven)的实现示例

    WebSocket整合SSM(Spring,Struts2,Maven)的实现示例

    这篇文章主要介绍了WebSocket整合SSM(Spring,Struts2,Maven)的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    冰湖一角9042021-07-09
  • Java教程手把手写Spring框架

    手把手写Spring框架

    Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架...

    Mr.Bean-Pig8042021-12-01
  • Java教程servlet上传文件实现代码详解(四)

    servlet上传文件实现代码详解(四)

    这篇文章主要为大家详细介绍了servlet上传文件的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    柳暗花明睡一觉11542021-01-14
  • Java教程Java aop面向切面编程(aspectJweaver)案例详解

    Java aop面向切面编程(aspectJweaver)案例详解

    这篇文章主要介绍了Java aop面向切面编程(aspectJweaver)案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参...

    一个脱离了高级趣味的人11752021-11-24
  • Java教程IDEA项目重命名的操作

    IDEA项目重命名的操作

    这篇文章主要介绍了IDEA项目重命名的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    fastjson_7822021-08-06
  • Java教程详解maven BUILD FAILURE的解决办法

    详解maven BUILD FAILURE的解决办法

    这篇文章主要介绍了详解maven BUILD FAILURE的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    朱砂色5772021-08-30
  • Java教程java新人基础入门之递归调用

    java新人基础入门之递归调用

    这篇文章主要给大家介绍了关于java新人基础入门之递归调用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价...

    一位远方的诗人10412021-08-11