반응형

MyBatis ResultHandler sample

dao 와 sqlmap.xml 를 변경하지 않고 service 에만 ResultHandler 처리를 해주면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Autowired
private SqlSessionFactory sqlSessionFactory;
  
public String getCSVList() {
 
    SqlSession sqlSession = sqlSessionFactory.openSession();
    try {
        class MyResultHandler implements ResultHandler {
 
            @Override
            public void handleResult(ResultContext context) {
                BookInfoBean bean = (BookInfoBean) context.getResultObject();
            }
        };
 
        MyResultHandler handler = new MyResultHandler();
        bookInfoDao.getCSVList(handler);
 
        return null;
    } finally {
        sqlSession.close();
    }
}

< service.java >


1
2
3
public interface BookInfoDao {
    public void getCSVList(ResultHandler handler);
}

< dao.java >


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<resultMap id="bookInfoResult" type="kr.lancerme.webapp.dao.bookinfo.BookInfoBean">
    <id property="bookId" column="I_BOOK_ID" javaType="int"/>
    <result property="bookNm" column="S_BOOK_NM" javaType="java.lang.String"/>
    <result property="isbn" column="S_ISBN" javaType="java.lang.String"/>
    <result property="author" column="S_AUTHOR" javaType="java.lang.String"/>
    <result property="factoryId" column="S_FACTORY_ID" javaType="java.lang.String"/>
</resultMap>
  
<select id="getCSVList" resultMap="bookInfoResult">
<!-- book_info 의 목록 -->
    SELECT I_BOOK_ID,
           S_BOOK_NM,
           S_ISBN,
           S_AUTHOR,
           S_FACTORY_ID
      FROM book_info
</select>

< sqlmap.xml >

 출처 : lancerme.tistory.com/33



RowHandler 



이전에


List result = sqlMapClient.queryForList("selectList*****", parameter);


이렇게 사용했다면


 


아래처럼 사용하기


ResultRowHandler resultHandler = new ResultRowHandler() ;

sqlMapClient.queryWithRowHandler("selectList*****", parameter, resultHandler);

List result = resultHandler.getReturnList() ;


 


이렇게 사용하는 잇점은 검색해봐요 (^_^)


 


추가한 Class내용은


--------------------------------------------


import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.List;


import com.ibatis.sqlmap.client.event.RowHandler;

import com.lg.g4c.capp.lib.entity.Entity;


public class ResultRowHandler implements RowHandler{


 private List<Entity> returnList = new ArrayList<Entity>() ;


 /**

  * Constuctor

  */

 public ObjectRowHandler(){


 }


 /**

  * 결과조회에 대해 하나의 Row를 어떻게 담을지에 대한 로직구현

  * @param rowObject

  */

 public void handleRow(Object rowObject){

  Entity e_result = new Entity() ;

  try{

   e_result.parseResultSet((ResultSet)rowObject) ;

   returnList.add(e_result) ;


  }catch(Exception e){

   e.printStackTrace();

  }

 }


 public List<Entity> getReturnList(){

  return returnList ;

 }


}

[출처] iBatis RowHandler 사용하기 Sample|작성자 여우아저씨

반응형

+ Recent posts