使用MyBatis 查詢數據庫查出有數據 但返回對象爲null

<!-- 根據主鍵id查詢訂單信息-->
<select id="getExployeeByUserId" parametertype="java.lang.string" resulttype="com.my.vo.Exployee">
    select
    a.user_id as userId,
    a.user_code as userCode,
    a.user_name as userName, 
    a.status  status,  
    a.finish_time as finishTime,
    a.create_time as createTime
    from
    t_exployee a
    where a.user_id = #{userId,jdbctype=varchar}
</select>

<select id="getExployeeByUserCode" parametertype="java.lang.string" resulttype="com.my.vo.Exployee">
    select
    a.user_id as userId,
    a.user_code as userCode,
    a.user_name as userName, 
    a.status  status,  
    a.finish_time as finishTime,
    a.create_time as createTime
    from
    t_exployee a
    where a.user_code = #{userCode,jdbctype=varchar}
</select>

public class Exployee  {

private static final long serialVersionUID = 1L;
                      
private String userId; 
private String userCode;                   
private String userName;              
private String status;                  
private Date createTime;                
private Date finishTime;                  

//自動生成set、get方法

 

兩個查詢,參數和返回都是一樣的,getExployeeByUserId 百試不爽,必定查詢出結果;但是getExployeeByUserCode查詢,時不時的查詢結果返回爲null,明明是有數據的;愁死我了,你要是一直查不出來也行啊,一會有,一會沒有。百度的時候,有說是因爲數據庫表的字段和java的實體類字段對不上,建議配置ResultMap;查詢返回的時候,用resultMap="setExployee"          而不是resultType

  <resultMap id="setExployee" type="com.my.vo.Exployee">
    <result column="user_id" property="userId" jdbcType="VARCHAR"/>
    <result column="user_code" property="userCode" jdbcType="VARCHAR"/>
    <result column="user_name" property="userName" jdbcType="VARCHAR"/>
 
    <result column="status" property="status" jdbcType="VARCHAR"/>
    <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
    <result column="finish_time" property="finishTime" jdbcType="TIMESTAMP"/>
</resultMap>

數據庫表的字段和java的實體類字段對不上,這是原因之一,可以先覈實一下,排除一下是不是這個原因;我反正不是這個原因

我的情況是這樣的user_id 是主鍵,這個查詢百分百;但是user_code不是主鍵,在mybatis裏面,非主鍵查詢可能不會返回唯一值,所以返回結果不能用單實體,必須要用List類型接收,我後來把接口方法改成返回List,就能查詢出結果了。

也是繞了好久,各種排查

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章