溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mybatis resulttype返回值異常的問題怎么解決

發(fā)布時間:2021-08-25 18:12:29 來源:億速云 閱讀:188 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要講解了“mybatis resulttype返回值異常的問題怎么解決”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mybatis resulttype返回值異常的問題怎么解決”吧!

mybatis resulttype 返回值異常

在使用mybatis時。resulttype返回自定義的類時,可能返回的類中字段數(shù)據(jù)存在缺失。

例如:resulttype = "student" 但是當中有些字段為空

原因是因為數(shù)據(jù)庫字段和實體類字段不對應導致的。 mybatis底層 查詢數(shù)據(jù)返回會更據(jù)數(shù)據(jù)庫的字段和實體類的字段進行匹配,不區(qū)分大小寫。但是字段不一樣就無法傳遞值

例如:數(shù)據(jù)庫字段為:s_name 實體類字段為 name

處理方式1:

在查詢時添加別名 select s_name as name from student 別名對于實體類當中的字段。

處理方式2:

返回一個resultMap map配置當中指定數(shù)據(jù)庫中的列和實體類的類進行對應

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

mybatis resultType="map"的常見問題

在配置數(shù)據(jù)源的配置文件中,配置Mybatis的SqlSessionFactoryBean

一、map的key值 與select的字段順序的不一致問題

解決方法:

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

二、值為null的返回map中沒相應的key

解決方法:

1.查詢字段使用ifnull函數(shù)(可空字段較多時,不推薦)

2.修改mybatis配置

springmvc:

創(chuàng)建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> 
        <!-- 當返回數(shù)據(jù)類型為map,設(shè)置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);//設(shè)置駝峰命名規(guī)則 
                configuration.setCallSettersOnNulls(true);
            }  
        };  
    }  
}

感謝各位的閱讀,以上就是“mybatis resulttype返回值異常的問題怎么解決”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對mybatis resulttype返回值異常的問題怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI