1. 程式人生 > >由於Mybatis實體資料欄位不匹配而查不到的解決辦法

由於Mybatis實體資料欄位不匹配而查不到的解決辦法

使用MyBatis進行查詢操作時無法查詢出相應的結果,但是純sql又能查出資料時,需要考慮下是不是欄位對應實體類的屬性出現問題,解決方法有如下兩點

1、通過在查詢的sql語句中定義欄位名的別名,讓欄位名的別名和實體類的屬性名一致,這樣就可以表的欄位名和實體類的屬性名一一對應上了,這種方式是通過在sql語句中定義別名來解決欄位名和屬性名的對映關係的。

2、通過<resultMap>來對映欄位名和實體類屬性名的一一對應關係。這種方式是使用MyBatis提供的解決方式來解決欄位名和屬性名的對映關係的。

下面來看例子吧:

方法一 直接將 返回的資料庫欄位名與實體類的屬性名 設定成一樣,返回型別(resultType)直接設定成接收的實體類名.

<mapper namespace="me.gacl.mapping.orderMapper">
     <select id="selectOrder" parameterType="int" resultType="me.gacl.domain.Order">
            select order_id id, order_name name,order_price price from orders where order_id=#{id}
    </select>        
</mapper><!--   注意上邊的紅色字型 -->

方法二 注意,這裡使用了resultMap轉換了一下,所以要將resultType改為resultMap。

<mapper namespace="me.gacl.mapping.orderMapper">
    <select id="selectOrderResultMap" parameterType="int" resultMap="orderResultMap">
             select * from orders where order_id=#{id}
    </select>
    <!--通過<resultMap>對映實體類屬性名和表的欄位名對應關係 -->
    <resultMap type="me.gacl.domain.Order" id="orderResultMap">
        <!-- 用id屬性來對映主鍵欄位 -->
        <id 
property="id" column="order_id"/>         <!-- 用result屬性來對映非主鍵欄位 -->         <result property="name" column="order_name"/>         <result property="price" column="order_price"/>     </resultMap>         </mapper>

相關推薦

由於Mybatis實體資料匹配到的解決辦法

使用MyBatis進行查詢操作時無法查詢出相應的結果,但是純sql又能查出資料時,需要考慮下是不是欄位對應實體類的屬性出現問題,解決方法有如下兩點 1、通過在查詢的sql語句中定義欄位名的別名,讓欄位名的別名和實體類的屬性名一致,這樣就可以表的欄位名和實體類的屬性名一一

mybatis解決實體名和表列名一樣的問題

Book類有成員變數:bookName,price book表有列名:book_name,price 解決方法一:在BookMapper.xml檔案的sql語句中使用別名 例如: <select id="getAllBooks" resultType="Book">

Mybatis框架實體與資料庫表字段一致導致查詢該的值一直為null

實體類如下所示: public class BasicInfo { private Integer basic_id; private String name; private

mybatis 多個模糊匹配

<!--獲取歸檔人--> <[email protected] --> <[email protected] 2018-07-17--> <select id="getArchiveInfo" paramete

c# 對oracle插入資料過長超出限制的解決方案

通過建立儲存過程的方法解決問題,如下所示,儲存過程的名字為insertGEO,有4個輸入引數,Childrens,RingInParent直接通過sql語句插入時,欄位值過長會報錯,所以先在資料庫中建立儲存過程 create or replace procedure insertGEO (v_i

關於ORACLE中使用LIKE進行多模糊匹配的一種解決思路

      在ORACLE使用過程中經常會碰到查詢一張表裡的相關資訊而需要用多個欄位對其中一列進行模糊匹配的情況,最常見的做法是使用or連線多個查詢子語句。使用這個方法在匹配欄位多時就會顯得很繁瑣且容易出錯和遺漏。比如我工作中要在表A中查詢對應列puinfo中前六位為以下選

logstash nested內嵌 field protobuf解碼 codec 的解決辦法

logstash nested內嵌欄位 field protobuf解碼 codec 的解決辦法 主要需求 logstash-codec 下https://www.elastic.co/guide/en/logstash/6.3/codec-plugins.html此類解碼器 只能應用在原始資料上比如

dorado7.x datatype中設定mapping mapvalues之後,form中對應並未顯示下拉問題解決辦法

dorado7.x datatype中設定mapping mapvalues,如下圖: form中對應欄位並未出現下拉框,經排查,需要在form中設定createPrivateDataSet為true: 設定後,展現下拉框。

匯入他人androidstudio專案出現gradle匹配等問題的解決辦法(自己親測)

今天新裝了androidstudio2.3最新的環境,匯入別人的androidstudio專案的時候出現了各種版本不匹配的問題,gradle下載太慢,卡死的問題。所以自己先下載了gradle離線版本,然後放在了androidstudio安裝目錄下的gradle資

elasticsearch對analyzed無法使用term方法的解決辦法

眾所周知,對於es來說,如果其中某個欄位使用了analyzed分詞功能,那麼使用term時,很大概率將無法匹配,使用match又會得到太多的結果,這個時候,我們可以使用 match_phrase來達

MySQL中varchar值包含空格查詢問題解決辦法

前提條件:mysql提供了char和varchar兩種欄位型別,但若查詢條件where中包含char或varchar的限制條件,那麼會忽略char或varchar欄位記錄中末尾的空格字元。 原因:mysql中字串比較的時候使用的是PADSPACE校對規則,會忽略字元欄位最後的空格。 解決方法如下,例如查詢

轉換實體一致

package com.integralShopService.mapping; import com.account.dto.WaterAccountDto; import com.integralShopService.dto.WaterAccountSearchDto; import co

jQuery easyui dataGrid 動態改變排序名,一般情況下,在使用的時候,我們會點選相應進行排序,這裡以JAVA為例,後端的實體有可能和資料庫的一致; 如:實體類中的

jQuery easyui dataGrid 動態改變排序欄位名,一般情況下,在使用的時候,我們會點選相應欄位進行排序,這裡以JAVA為例,後端的實體類欄位有可能和資料庫的欄位不一致; 如:實體類中的屬性為userName,前臺filed="userName"而資料庫的欄位

修改protostuff-runtime原始碼排序實體,解決安卓和java伺服器序列化一致

github 原始碼地址 https://github.com/brucelwl/protostuff-runtime-bruce-1.1.3.git Protobuf是Google開源的高效,跨平臺的序列化工具,而protostuff是一個基於protobuf實現的序列化工具, 它較於proto

程式設計師面試寶典之資料庫的一個問題?資料表中第30到第40條記錄,有ID,但ID連續

解法一:  select top 10* from test  where id  not in (select top 29 id from test) 例如,我有以下這個test表:當我選取第六行到

mybatis在insert時,實體為null時,報錯問題

今天遇到如題的問題,就是在mybatis 插入oracle資料庫空值的報的異常: org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter.  Most JDBC dri

mysql按時間段統計資料 為時間戳

        SELECT FROM_UNIXTIME(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks;         

PostgreSQL建立設定預設值並且鎖表

1建立測試表 drop table if exists test009; create table test009( objectid bigint not null, name text not null, --flag integer default(2) not null

django資料查詢

5.2.4 欄位查詢 相當於sql語句中where子句,它可以為filter、exclude和get方法提供引數。 屬性名稱__比較運算子=值 #是兩個下劃線 操作符 說明 示例

MyBatis - 實體類的屬性名和資料庫列名一致時的兩種解決辦法!

問題:兩者不一致時 , 查詢結果無法封裝到實體!(也就無法查詢出來) ① 查詢的sql語句中使用別名進行查詢. 但要注意: 欄位名的別名 要和 實體類的屬性名一致! UserMapper.xml <!-- namespace:介面的全路徑名.