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 SERVER中LIKE使用變量類型不同輸出結果不一致解惑
如果 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的是將任務中止(暫停的意思),但是此任務並沒有結束,他仍然在程序中他只
微信小程式中wxml和wxss的樣式說明,徹底搞定佈局排版
對於css不熟悉的Android程式設計師來說,開發微信小程式面臨的一個比較困難的問題就是介面的排版了。微信小程式的排版就跟wxml和wxss有關了,它們兩者相當於android的佈局檔案,其中wxml指定了介面的框架結構,而wxss指定了介面的框架及元素的顯示樣式。 一、wxml