0
我有以下方法解析到我的batis映射器,參數不是通過一個java.util.Map
public Project getProjectByUser(long userId)
throws IOException {
SqlSession sqlSession = null;
Project response = null;
Map<String, Long> projectParam = new HashMap<String, Long>();
projectParam.put("userId", userId);
try {
sqlSession = DBSessionManager.getInstance().getSessionFactory()
.openSession();
LOG.debug("SqlSession opened for Project mapper");
ProjectMapper projectMapper = sqlSession
.getMapper(ProjectMapper.class);
sqlSession.insert("getProjectByUserId", projectParam);
sqlSession.commit();
response = projectMapper.getProjectByUserId(userId);
} finally {
if (sqlSession != null) {
sqlSession.close();
LOG.debug("SqlSession closed");
} else {
System.out.println("_sql session null");
}
}
return response;
}
而且在XML文件中我有下面的代碼。
<select id="getProjectByUserId" resultMap="projectResultMap"
parameterType="map" flushCache="false" useCache="false">
SELECT
project_id,
user_id, project_name,
created_date,
last_updated_date FROM
project
WHERE
user_id=#{userId}
</select>
當我替換(硬編碼的值)user_id=#{userId}
一部分user_id=1
預期的結果被返回。但是,當我從客戶端應用程序傳遞它時,雖然值正確設置爲映射,但查詢並不正確,並導致空返回。我在這裏做錯了什麼。
我ProjectMapper類的方法定義是,
public Project getProjectByUserId(long userIdParam);
更新: 以下是服務接口的方法,
@GET
@Path("{userId}/{projectName}")
@Produces("application/json")
public Project getProjectByUser(@PathParam("userId") long userId);
和執行上述調用數據層方法(第一提及)
感謝您的快速回復,我已經更新了這個問題,我已經有了這個方法,我將這個值傳遞給數據層,請參閱更新 –
好的,我現在看到。但沒關係 - 你仍然需要在數據層方法上使用@Param註解。 '@ Param'是myBatis需要知道如何將'userIdParam'注入到SQL中的。它與'@ PathParam'無關,它實際上是Web映射所需要的。 –
@IsuruGunawardana請看我上面的評論,讓我知道它是否有幫助... –