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|작성자 여우아저씨