首页 > 其他分享 >关于mybatis resulttype 返回值异常的问题

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

时间:2023-02-08 09:58:34浏览次数:43  
标签:map 实体类 name resulttype 字段 mybatis 返回值

目录
  • mybatisresulttype返回值异常
    • 例如:resulttype="student"但是当中有些字段为空
    • 例如:数据库字段为:s_name实体类字段为name
  • mybatisresultType="map"的常见问题
    • 一、map的key值与select的字段顺序的不一致问题
    • 二、值为null的返回map中没相应的key

 

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

解决方法:

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

修改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  
@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);
            }  
        };  
    }  
}  

标签:map,实体类,name,resulttype,字段,mybatis,返回值
From: https://www.cnblogs.com/dituirenwu/p/17100588.html

相关文章

  • MyBatis-Plus——saveOrUpdate方法如何确定主键
    saveOrUpdate方法:先更新,更新失败返回0;发起查找,查找失败返回0,最后进行插入操作有三种执行情况1.插入的数据不带id插入成功。同时MyBatis-Plus会自动生成一个19位的id,默认主......
  • 整合MyBatis
      创建实现类的目的,sqlsession私有sqlsession通过在配置文件中的构造方法注入到实现类的私有属性中,test方法只做一件事,就是通过getbean生成实现类对象,然后调用方法输......
  • SpringBoot集成mybatis
    SpringBoot创建项目首先创建好项目,详情见:https://www.cnblogs.com/expiator/p/15844275.htmlSpringBoot引入mybatis依赖<dependency><groupId>org......
  • MyBatis核心配置文件
    <?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-confi......
  • Mybatis的Update语句配置的写法
    1、Mybatis的Update语句配置的写法<updateid="updateMaxNum"parameterType="map">update表名setMAXNUM=#{maxNum}whereITEMID=#{itemIdHead}andCU......
  • mybatis的xml文件的传入参数不同的写法
    1、如果是传入多个字符串的参数。parameterType="java.lang.String"<selectid="getMaxNum"parameterType="java.lang.String"resultType="java.lang.Integer">se......
  • 基于Springboot+Mybatis+mysql+vue宠物到家管理平台
    @目录一、系统介绍二、功能展示1.主页(普通用户)2.登陆、注册(普通用户)3.宠物大全(普通用户)4.宠物详情(申请领养、点赞、评论)(普通用户)5.我的送养(普通用户)6.我的领养(普通用户......
  • SpringBoot2.5.6集成mybatis
    1.应用依赖<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version......
  • Mybatis的入门学习
    Mybatis 一款优秀的持久层框架 官网:https://mybatis.org/mybatis-3/zh/index.html  快速入门 在导入jar包之后,配置xml文件最好使用Mybatis-config.xml作......
  • SpringBoot+MyBatis的动态SQL、使用动态SQL时List传值错误解决方案
    目录实现动态SQL的四种方式:1、XML配置2、脚本SQL3、在方法中构建SQL4、结构化SQL关于动态SQL的List传值错误问题1、错误代码2、解决错误实现动态SQL的四种方式:1、XML配置......