私は現在実装していますコメントに対するコメント。Spring MyBatis Mapperに2つのパラメタを書き込む方法は?
メンバーが特定の投稿を閲覧すると、コメントやコメントに関するコメントを見ることができます。
上記の条件を満たすためには、投稿のインデックス値とコメントのインデックス値が必要です。つまり、2つのパラメータ値が必要です。
私は以下のロジックを書いています。
boardDaoMapper.xml
<select id="selectCommentOfComment" parameterType="java.util.HashMap" resultType="java.util.HashMap">
select * from board_comment_of_comment where board_idx = #{board_idx} and board_comm_idx = #{board_comm_idx}
</select>
そしてBoardDaoコード:
public List<HashMap<String, Object>> selectCommentOfComment(int board_idx, int board_comm_idx);
そしてBoardService:
@Override
public List<HashMap<String, Object>> getBoardCommentOfComment(int board_idx, int board_comm_idx)
{
System.out.println("ServieImple getBoardCommentOfComment Function Call >> " + board_idx + "/" + board_comm_idx);
List<HashMap<String, Object>> c_of_c_list = boardDao.selectCommentOfComment(board_idx, board_comm_idx);
return c_of_c_list;
}
そしてBoardControllerコード:
@RequestMapping("viewPage.do")
public String viewPage(HttpSession session,HttpServletRequest request, HttpServletResponse response,Model model,
@RequestParam(value="board_idx", defaultValue="1") int board_idx) throws IOException,IllegalStateException
{
checkLogin(request, response, session);
// 해당 게시물에 대한 댓글들의 idx값 조회 (board_comm_idx)
List<HashMap<String, Object>> commentList= bService.getBoardForComment(boardData.getBoard_idx());
System.out.println("Board_idx Value was : " + board_idx);
// 해당 게시물에 대한 댓글들의 개수만큼 for문을 돌고..
for(int i = 0; i < commentList.size(); i++)
{
// board_comm_idx 값을 변수에 저장
int board_comm_idx= (Integer) commentList.get(i).get("board_comm_idx");
List<HashMap<String, Object>> getCommentOfComentList =
bService.getBoardCommentOfComment(board_idx, board_comm_idx);
System.out.println("GetCommentOfCommentList : " + getCommentOfComentList);
model.addAttribute("cocList", getCommentOfComentList);
}
return "viewPage";
}
の
値は、2つのパラメータに適しています。(BoardServiceで)そのような..
ServieImple getBoardCommentOfComment Function Call >> 2/3
しかし、これはうまく実行してエラーが発生しません。
org.apache.ibatis.binding.BindingException: Parameter 'board_idx' not found. Available parameters are [0, 1, param1, param2]
at org.apache.ibatis.binding.MapperMethod$ParamMap.get(MapperMethod.java:165)
at org.apache.ibatis.reflection.wrapper.MapWrapper.get(MapWrapper.java:44)
at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:116)
at org.apache.ibatis.executor.BaseExecutor.createCacheKey(BaseExecutor.java:186)
at org.apache.ibatis.executor.CachingExecutor.createCacheKey(CachingExecutor.java:129)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:76)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
at com.sun.proxy.$Proxy11.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:119)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
at com.sun.proxy.$Proxy13.selectCommentOfComment(Unknown Source)
at service.BoardServiceImple.getBoardCommentOfComment(BoardServiceImple.java:367)
at controller.BoardController.viewPage(BoardController.java:175)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
マッパーに問題があると思います。
なぜこのようなことが起こり、どうすれば解決できますか?
ご意見は貴重です。あなたの意見を教えてください。
私は解決しましたが、別の問題が発生しました。 私と1:1でチャットできますか? –
問題は何ですか? – shinjw
コメントにコメントを追加し、コメントに別の名前とコメントでログインすると、それらはうまく表示されますが、新しいコメントを作成すると、そのコメントは作成されたコメントには表示されません。ただし、すべての値はログに保存されます。 –