BLOG ARTICLE 아이바티스 파라메터값 | 1 ARTICLE FOUND

  1. 2011.08.22 [iBATIS] SQL 쿼리문이 정의되어있는 xml 로 값 넘기기(SQLMap.xml 파일로 인자값 넘기기)



DAOManager 에서 생성된 실제 DAO 작업을 처리할 클래스의 메소드가 실행되면

그에 해당하는 SQL 이 정의되어 있는 XML 파일이 실행될 텐데

실행시키면서 인자값을 던져 줄 수있다. 클래스가 됐던, 기본형식 이 됐던.





* 아래파일은 실제 수행하는 클래스이다.*
package Struts_BBS;



import java.util.ArrayList;

import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.template.SqlMapDaoTemplate;

public class IBATISDAOimpl extends SqlMapDaoTemplate implements IBATISDAO {

	// 생성이되면서, 
	// 저렇게 설정해놓은 IBATISDAOimpl 클래스가 인자로 들어온다??????
	public IBATISDAOimpl(DaoManager daoManager) {
		super(daoManager);
		// TODO Auto-generated constructor stub
	}

	@Override
	public ArrayList getArticles(int index) {
		// TODO Auto-generated method stub
		return (ArrayList)queryForList("Allarticles", index);
	}

}

위 코드에서 처럼 


queryForList("Allarticles", index);


xml 의 ID 와 일치되는 스트링값과, 그 인자로 int 값을 넘겨주고있다.

이제 xml 파일에서 저 인자값을 빼다쓰는 작업을 해보자.  






*아래는 SQL 작업을 수행하는 XML 이다.*

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/dao-2.dtd">


<sqlMap>

<!-- Struts_BBS.ItemBean 클래스를 alias 속성을 줘서 artcle 이라는 이름으로 쓰겠다고 정의 -->

<typeAlias alias="article" type="Struts_BBS.ItemBean"/>

<!-- 긴 sql 문이나 자주쓰는 sql문장을 sql 엘리먼트를 이용해서 정의 -->

<sql id="select-all-index">

SELECT * FROM 

(SELECT ROWNUM rnum,A.*  

FROM 

(SELECT * FROM margo ORDER BY article_num DESC) A ) 

</sql>

<select id="Allarticles" parameterClass="int" resultClass="article">

  <include refid="select-all-index"/>

WHERE rnum BETWEEN #index# + 1 AND  #index# + 10

 

</select>


</sqlMap>


위코드에서 parameterClass="int" 처럼 파라미터를 int 형으로 받겠다고 선언하면 int 가 되고 

저기에 클래스를 쓴다면 클래스가 된다. 일단은 int 형으로 받을때는 #index#
형식으로 써주면 넘어온 값을 쓸 수있다. (index 로 넘겼다고, index 로 쓰지않아도 되더라..#a# 해도 값이 나오긴 마찬가지임, 단 기본타입만 되는듯)


클래스를 쓰는 방법은 



만약 맵을 넘긴다고 치자.

map.put("a", 1);

    map.put("b", 20);


그러면 저걸 xml 에서 뽑아 쓸때는 

parameterClass 에는 map 클래스를 써줘야한다. 

parameterClass="java.util.Map"

 이렇게 설정해주고 쓸때는 맵에 KEY 값을 지정한 이름을 #KeyName# 하면 값이 뽑힌다.

<select id="Allarticles" parameterClass="java.util.Map" resultClass="article">
<include refid="select-all-index"/>
 
WHERE rnum BETWEEN #a# AND  #b#
 
</select>




















YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST