關(guān)于mybatis resulttype 返回值異常的問(wèn)題
mybatis resulttype 返回值異常
在使用mybatis時(shí)。resulttype返回自定義的類(lèi)時(shí),可能返回的類(lèi)中字段數(shù)據(jù)存在缺失。
例如:resulttype = "student" 但是當(dāng)中有些字段為空
原因是因?yàn)閿?shù)據(jù)庫(kù)字段和實(shí)體類(lèi)字段不對(duì)應(yīng)導(dǎo)致的。 mybatis底層 查詢(xún)數(shù)據(jù)返回會(huì)更據(jù)數(shù)據(jù)庫(kù)的字段和實(shí)體類(lèi)的字段進(jìn)行匹配,不區(qū)分大小寫(xiě)。但是字段不一樣就無(wú)法傳遞值
例如:數(shù)據(jù)庫(kù)字段為:s_name 實(shí)體類(lèi)字段為 name
處理方式1:
在查詢(xún)時(shí)添加別名 select s_name as name from student 別名對(duì)于實(shí)體類(lèi)當(dāng)中的字段。
處理方式2:
返回一個(gè)resultMap map配置當(dāng)中指定數(shù)據(jù)庫(kù)中的列和實(shí)體類(lèi)的類(lèi)進(jìn)行對(duì)應(yīng)
<id column="s_name" jdbcType="VARCHAR" property="name"/>
mybatis resultType="map"的常見(jiàn)問(wèn)題
在配置數(shù)據(jù)源的配置文件中,配置Mybatis的SqlSessionFactoryBean
一、map的key值 與select的字段順序的不一致問(wèn)題
解決方法:
resultType="map" 修改為 resultType="java.util.LinkedHashMap"
二、值為null的返回map中沒(méi)相應(yīng)的key
解決方法:
1.查詢(xún)字段使用ifnull函數(shù)(可空字段較多時(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> <!-- 當(dāng)返回?cái)?shù)據(jù)類(lèi)型為map,設(shè)置callSettersOnNulls會(huì)把值為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); } }; } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java利用AlphaComposite類(lèi)合并圖像
這篇文章主要介紹了Java利用AlphaComposite類(lèi)合并圖像,幫助大家更好的利用Java處理圖像,感興趣的朋友可以了解下2020-10-10mybatis查詢(xún)字段為null設(shè)置為0的操作
這篇文章主要介紹了mybatis查詢(xún)字段為null設(shè)置為0的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02Spring Boot系列教程之7步集成RabbitMQ的方法
RabbitMQ 即一個(gè)消息隊(duì)列,主要是用來(lái)實(shí)現(xiàn)應(yīng)用程序的異步和解耦,同時(shí)也能起到消息緩沖,消息分發(fā)的作用。下面這篇文章主要給大家介紹了關(guān)于Spring Boot之7步集成RabbitMQ的相關(guān)資料,需要的朋友可以參考下2018-11-11