偶遇MyBatis之 java.lang.UnsupportedOperationException

報錯信息:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.UnsupportedOperationException
### The error may exist in file [C:\Users\5618\IdeaProjects\easy-home\eh-my-dao\target\classes\sqlmaps\mybatis\DepartmentUser.xml]
### The error may involve com.xgt.dao.mybatis.department.DepartmentUserDao.queryDepartmentUserIdByUserId
### The error occurred while handling results
### SQL: SELECT user_id FROM yp_department_user WHERE department_id =           (SELECT department_id FROM yp_department_user WHERE user_id = ?)
### Cause: java.lang.UnsupportedOperationException

Dao層方法:

List<Integer> queryDepartmentUserIdByUserId(Integer loginAdminUserId); 

xml文件sql寫法: 

<select id="queryDepartmentUserIdByUserId" parameterType="java.lang.Integer" resultType="java.util.List">
      SELECT user_id FROM yp_department_user WHERE department_id =
      (SELECT department_id FROM yp_department_user WHERE user_id = #{loginAdminUserId})
</select>

 分析錯誤地方:

接收傳參:parameterType="java.lang.Integer"沒有問題,

返回參數:resultType="java.util.List"看上去很合理,但是錯就錯在這裏,

解決辦法:將java.util.List改爲Integer。

總結: 

原因就在於resultType代表的是List中的元素類型,而不應該是List本身,究其原因就在於被dao中的方法聲明(標記處)

List<Integer> queryDepartmentUserIdByUserId(Integer loginAdminUserId);

給迷惑住了

切記:resultType返回的是集合中的元素類型,而不是集合本身

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