关于mybatis resulttype 返回值异常的问题
作者:光滑的秃头 发布时间:2021-08-09 20:26:19
标签: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);
}
};
}
}
来源:https://blog.csdn.net/ycf921244819/article/details/80487599


猜你喜欢
- Spring Boot+Vue 前后端分离项目架构项目流程:1. SpringBoot 后端项目1、新建一个 SpringBoot 工程,并
- 卫星菜单 ArcMenu 相信大家接触安卓,从新手到入门的过渡,就应该会了解到卫星菜单、抽屉、Xutils、Coolmenu、一些大神封装好
- 本文实例为大家分享了Unity shader实现遮罩效果的具体代码,供大家参考,具体内容如下效果:shader代码:Shader "
- 本文实例为大家分享了javaweb购物车案列的具体代码,供大家参考,具体内容如下一、项目目录结构 二、源代码dao包——dao层:
- 如下所示:using System;using System.Collections.Generic;using System.Text;n
- 自动装配的含义在SpringBoot程序main方法中,添加@SpringBootApplication或者@EnableAutoConfi
- 前言相信大家在使用spring的项目中,前台传递参数到后台是经常遇到的事, 我们必须熟练掌握一些常用的参数传递方式和注解的使用,本文将给大家
- 新建一个类MyPageInterceptor.java(注意在springboot中要添加注解@Component)package com.
- 前言在做项目的时候,遇到一个需求,需要我对Chart图标标记数据正在运行,实现数据可视化,因为我们的表格是隐藏Y轴的刻度是看不到数据值的,于
- 具体可见http://developer.android.com/tools/debugging/ddms.html。 DDMS为IDE和e
- 接口介绍:识别超过9千种菜品,支持客户创建属于自己的菜品图库,可准确识别图片中的菜品名称、位置、卡路里信息,并获取百科信息,适用于多种客户识
- 一、背景spring-data-mongo 实现了基于 MongoDB 的 ORM-Mapping 能力,通过一些简单的注解、Query封装
- 从Java 5开始,Java语言对方法参数支持一种新写法,叫 可变长度参数列表,其语法就是类型后跟...,表示此处接受的参数为0到多个Obj
- turbine是聚合服务器发送事件流数据的一个工具,hystrix的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过turbine
- 条码的应用已深入生活和工作的方方面面。在处理条码时,常需要和各种文档格式相结合。当需要在文档中插入、编辑或者删除条码时,可借助于一些专业的类
- 市面上有好多的类比ListView刷新数据的开源框架,如:v4包自带的SwipeRefreshLayout ,以及集ListView、Gri
- Date类概述java.util.Date类 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分
- C++String类型的逆序这里使用反向迭代器实现#include<iostream> #include <string&
- 代理模式是java中最常用的设计模式之一,尤其是在spring框架中广泛应用。对于java的代理模式,一般可分为:静态代理、 * 、以及C
- 在springmvc中controller的结果集可通过json格式传到js前端接受,也可以通过Map传给前端,具体实现如下1,通过json