1. 程式人生 > >Mybatis程式中執行和單獨執行同一條SQL出現結果不一致(部分資料沒有查詢出來)

Mybatis程式中執行和單獨執行同一條SQL出現結果不一致(部分資料沒有查詢出來)

1.mapper檔案如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.enci.isms.support.service.cus.dao.IsmsCusUserInfoMapper">
    <resultMap id="BaseResultMap" type="com.enci.isms.support.service.cus.model.IsmsCusUserInfo">


        <id column="ID" property="id" jdbcType="DECIMAL" />
        <result column="OPEN_ID" property="openId" jdbcType="VARCHAR" />
        <result column="MOBILE_PHONE" property="mobilePhone" jdbcType="VARCHAR" />
        <result column="REAL_NAME" property="realName" jdbcType="VARCHAR" />

        <result column="USER_EMAIL" property="userEmail" jdbcType="VARCHAR" />
        <result column="PASSWORD" property="password" jdbcType="VARCHAR" />
        <result column="TYPE" property="type" jdbcType="VARCHAR" />
        <result column="JOB_NUMBER" property="jobNumber" jdbcType="VARCHAR" />

        <result column="USER_LEVEL" property="userLevel" jdbcType="VARCHAR" />
        <result column="STATUS" property="status" jdbcType="VARCHAR" />
        <result column="PARENT_PARENT_ID" property="parentParentId" jdbcType="DECIMAL" />
        <result column="PARENT_ID" property="parentId" jdbcType="DECIMAL" />
        <result column="TEAM_ID" property="teamId" jdbcType="DECIMAL" />
        <result column="IDENTIFY_NUMBER" property="identifyNumber" jdbcType="VARCHAR" />
        <result column="IS_AUTHORISED" property="isAuthorised" jdbcType="VARCHAR" />
        <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" />
        <result column="LAST_OPERATOR_TIME" property="lastOperatorTime" jdbcType="TIMESTAMP" />
        <result column="SALT" property="salt" jdbcType="VARCHAR" />
        <result column="REGISTER_STATUS" property="registerStatus" jdbcType="VARCHAR" />
        <result column="REGIST_TIME" property="registTime" jdbcType="TIMESTAMP" />
        <result column="AUTHENT_TIME" property="authentTime" jdbcType="TIMESTAMP" />
    </resultMap>
<sql id="Base_Column_List" >
ID,OPEN_ID,MOBILE_PHONE,REAL_NAME,USER_EMAIL,PASSWORD,TYPE,JOB_NUMBER,USER_LEVEL,STATUS,
PARENT_PARENT_ID,PARENT_ID,TEAM_ID,IDENTIFY_NUMBER,IS_AUTHORISED,REGISTER_STATUS,
CREATE_TIME,LAST_OPERATOR_TIME,SALT,REGIST_TIME,AUTHENT_TIME
</sql>

  <select id="getDtoByPrimaryKey" resultType="com.enci.isms.support.service.cus.dto.IsmsCusUserDto">
SELECT 
<include refid="Base_Column_List" />
FROM
ISMS_CUS_USER_INFO cus
WHERE CUS."ID" = #{id}
  </select>

</mapper>

2.dto實體部分如下

public class IsmsCusUserDto implements Serializable {


    private static final long serialVersionUID = 466674771467600004L;
    
    private Long id;
    private String openId;
    private String mobilePhone;
    private String realName;
    private String userEmail;
    private String password;
    private String type;
    private String jobNumber;
    private String userLevel;
    private String status;
    private Long parentParentId;
    private Long parentId;
    private Long teamId;
    private String identifyNumber;
    private String isAuthorised;
    private Date createTime;
    private Date lastOperatorTime;
    private Long waitingAuditScore;
    private Long settlementScore;
    private Long exchangeScore;
    private Long freezeScore;}

3.就這樣的在程式中執行到這個 sql的時候 查詢出來的這個物件資訊部分欄位屬性都是賦值null,但是把這條sql單獨取出在資料庫執行可以查詢出一條完整資訊的資料,百思不得其解,百度也沒有門路。

4.通過對查詢結果進行分析發現帶有下劃線的欄位對應屬性都沒有查詢出屬性資料,所以問題就在resultType   的dto屬性和要查詢的結果集 <include refid="Base_Column_List" />   屬性和查詢欄位名不是匹配的 ,要麼給查詢的欄位名啟別名,要麼就把resultType  換成  resultMap="BaseResultMap" 即可

如有疑問請聯絡群主:


相關推薦

Mybatis程式執行單獨執行同一SQL出現結果一致部分資料沒有查詢出來

1.mapper檔案如下所示: <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybat

SQL SERVERLIKE使用變量類型不同輸出結果一致解惑

如果 wrapper ng- http sql eat 的人 -c grid 一同事在寫腳本時,遇到一個關於LIKE裏面使用不同的變量類型導致查詢結果不一致的問題,因為這個問題被不同的人問過好幾次,索性總結一下,免得每次都要解釋一遍,直接丟一篇博客豈不是更方便!其實看似有點

Windows10系統C盤檔案實際大小佔用空間可用空間一致相差差8到20G

WIN10系統C盤佔用和檔案實際大小不一致。【差20G找不到】  綜合討論區  >  一般性問題討論區 問題 0 登入進行投票 新買的電腦,預裝WIN10家庭版64位。 剛剛開機,進行了一次重置。 C盤右鍵屬性顯示“已佔用54.

奇怪!同一sql語句在資料庫程式碼執行結果不同?!當然是人錯了 ……

    sql語句就是它: select count(1) from syscolumns where [id]=object_id( 'tablecommon' )       判斷資料庫中

程式DEBUG執行結果一致??不要在DEBUG監視ResultSet了!!

昨天除錯程式,很簡單的一段程式, ResultSet rs = pstmt.executeQuery(); Clob result = null; if (rs != null) { while (rs.next()) {

mybatis ${}導致mysql資料庫按照SQL語句執行程式執行結果一致

今天遇到一個問題,某段執行SQL的程式在我這裡執行正常,但是到了到了我同事那裡就不正常。我倆連的不是同一個資料庫地址,但是資料庫的內容是一致的。後來把xml檔案裡面處理引數的${}換成#{}就正常了,雖然問題解決了但是原因還是不知道。

EF執行SQL語句 結果直接在Sqlserver執行結果一致

enume 出了 text con query context png syn raw 先說問題 直接執行sql的結果 var result = base.Context.Customers.SqlQuery(sql);   sql 語句是打斷點取得的,連接的也

MFC建立使用執行緒的方法

有關建立執行緒的問題有三種方法: 1.C語言函式,呼叫_beginthread(); 2.API函式,呼叫CreateThread(); 3.MFC函式,呼叫AfxBeginThread(); 推薦使用MFC函式AfxBeginThread(); 利用

Java建立啟動執行緒的兩種方式

方式1:繼承Thread類 步驟: 1):定義一個類A繼承於java.lang.Thread類. 2):在A類中覆蓋Thread類中的run方法. 3):我們在run方法中編寫需要執行的操作:run方法裡的程式碼,執行緒執行體. 4):在main方法(執行緒)中,建

C#程式CMD命令的執行

在C#的各種程式設計中,往往涉及到部分CMD命令的操作,尤其是對於部分程式的啟動與停止操作。 因此,對於常用的CMD操作相關的類,需要熟悉,現總結如下: 1,CMD操作時需要先啟動CMD程式,即通過啟動程式類Process來實現。 2,可以通過設定啟動程式類的Start

應用程式嵌入的網頁執行出現“指令碼錯誤”解決方法

 CComPtr<IWebBrowser2> pWB2;  HRESULT hr;  hr = m_wndIE.QueryControl(&pWB2);  if (pWB2)  {   CComVariant v;   CComBSTR url(

理解GCD任務佇列執行的原理

我們都知道IOS中常用於處理執行緒的三種方式:NSThread、NSOperation、GCD,而GCD有很好的的優點就是不需要我們來處理runLoop的執行迴圈,它是一套基於C的併發程式設計(但是強調一下GCD並不能理解為多執行緒,因為這個並不是自己來控制執行緒),

MyBatis插件及示例----打印每SQL語句及其執行時間

應該 log bject 兩個 ack ctrl+ 給定 打破 insert Plugins 摘一段來自MyBatis官方文檔的文字。 MyBatis允許你在某一點攔截已映射語句執行的調用。默認情況下,MyBatis允許使用插件來攔截方法調用 Execut

Java jvm 載入機制及 其中解釋執行編譯執行的區別

jvm載入機制 https://www.cnblogs.com/Qian123/p/5707562.html https://www.cnblogs.com/lingz/archive/2018/07/31/9394238.html 以前有句話說:“Java是解釋執行的 ” 。現在看

linux Shell grep+wc取值在shell結果與手動執行結果一致的坑

vim restart.sh #!/bin/bash VDS=ps -ef |grep -w vds|grep -v grep|wc -l if [ $VDS -eq 0 ];thencd /usr/local/program;./linux-start.sh restartelseecho "It's

使一段程式碼第一次執行以後執行結果不同

在學習《C專家程式設計》時,遇到了這段程式碼非常的有意思。 void generate_initializer(char * string) { static char separator = ' '; printf(" %c %s \n",separator,stri

Java程式設計思想AttemptLocking執行結果預期一樣使用顯示的Lock物件

平臺: Windows7 32bit JDK版本: 1.5.0_22,1.8.0_121 實測結果為: tryLock(): true tryLock(2, TimeUnit.SECONDS): true tryLock(): true tryLock(2, TimeUnit.SEC

編譯執行解釋執行的區別

解釋執行: 由直譯器根據輸入的資料當場執行而不生成任何的目標程式. 解釋執行程式是高階語言翻譯程式的一種,它將源語言(如BASIC)書寫的源程式作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程式。這種工作方式非常適合於人通過終端裝置與計算機會話,如

ctrl+c,ctrl+d,ctrl+z在linux程式意義區別

ctrl+c,ctrl+d,ctrl+z在linux程式中意義和區別 ctrl+c和ctrl+z都是中斷命令,但是他們的作用卻不一樣.   ctrl+c是強制中斷程式的執行,程序已經終止。   ctrl+z的是將任務中止(暫停的意思),但是此任務並沒有結束,他仍然在程序中他只

微信小程式wxmlwxss的樣式說明,徹底搞定佈局排版

對於css不熟悉的Android程式設計師來說,開發微信小程式面臨的一個比較困難的問題就是介面的排版了。微信小程式的排版就跟wxml和wxss有關了,它們兩者相當於android的佈局檔案,其中wxml指定了介面的框架結構,而wxss指定了介面的框架及元素的顯示樣式。 一、wxml