Expected one result (or null) to be returned by selectOne(), but found: 5

Expected one result (or null) to be returned by selectOne(), but found: 5

1.原因分析

myabtis的xml配置bean數據庫等均無錯誤,當 select返回單個結果集時,不會報錯,多個結果集時則報錯。

2.報錯現象

·dao定義如下

/**
     * 獲取datagrid數據
     * @param example
     * @param daaId
     * @return
     */
    Page<DaaOrginfo> getDataGridByExample(@Param("example")Example example, @Param("daaId")String daaId);

·通過mapper調用dao

Page<DaaOrginfo> daaOrginfoPage = daaOrginfoxMapper.getDataGridByExample(example, daaId);

返回結果如:Expected one result (or null) to be returned by selectOne(), but found: 5
這是因爲:會自動選擇selectOne()方法,由於只能返回一個對象的結果,當返回到多個對象的結果集時報錯。getUser是一個student類的bean無法接受多個結果集,則改用List就可以接受多個結果集

3.解決方法

·dao定義返回值修改爲List

/**
* 獲取datagrid數據(dao接口)
* @param example
* @param daaId
* @return
*/
List<DaaOrginfo> getDataGridByExample(@Param("example")Example example, @Param("daaId")String daaId);

·service實現類返回值修改爲List

/**
* 獲取datagrid數據(service實現類)
* @param example
* @param daaId
* @return
*/
List<DaaOrginfo> daaOrginfoPage = daaOrginfoxMapper.getDataGridByExample(example, daaId);

4.注意事項

1.注意spring參數傳遞2個及以上時,請使用@Param定義參數,否則參數無法正確綁定到sql上

2.注意mapper文件中的namespace要正確, 請通過輸入加提示自動完成,如:輸入com後輸入點,請等待提示,並選擇,防止手動輸入錯誤。

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