IBATIS (아이바티스) - parameterClass, resultClass, insert, update, delete, select, 형상관리도구

2019. 5. 7. 19:07웹(JSP)

 

------------------------------ibatis---------------------------------

ibatis SQL Mapper 파일
            - SQL 쿼리를 정의한다.
            - 주요 형식
            <태그명 id="" parameterClass="" resultClass="">
                        SQL 쿼리
            </태그명>


                        * id 속성
                                    - 작성된 쿼리를 식별하기 위한 이름 설정한다.
                                    - 동일한 이름을 사용할 수 없다.

                        * parameterClass 속성            
                                    - 쿼리실행에 필요한 값을 포함하고 있는 클래스의 타입을 설정한다.
                                    - 기본자료형, ValueObject, Map 타입을 설정할 수 있다.
                        
                        * resultClass 속성
                                    - 쿼리실행 후 조회된 값을 담는 클래스의 타입을 설정한다.
                                    - SELECT 쿼리일때만 사용된다.
                                    - 기본자료형, ValueObject, HashMap 타입을 설정할 수 있다.

            - 작성예

 

// 작성 예시 VO파일

package  kr.co.hta.vo;
public class Department{

	private int id;
	private String name;
	private int mgrId;
	private int locId;
	// getter/setter
}

 

 

 

 

    INSERT 구문

// ibatis 작성
<insert id="addDept" parameterClass="kr.co.hta.vo.Department">
	insert into departments
	(department_id, department_name, manager_id, location_id)
	values
	(departments_seq.nextval, #name#, #mgrId#, #locId#)
</insert>
           
           
           
// Dao 작성시
public void addDept(Department dept){
	sqlMap.insert("addDept", dept);
}

 

 

 

 UPDATE 구문

//ibatis 파일작성시
<update id="updateDept" parameterClass="kr.co.hta.vo.Department">
	update departments 
	set
	department_name = #name#,
	manager_id = #mgrId#
	location_id = #locId#
	where department_id = #id#
</update>



// Dao 작성시
public void updateDepartment(Department dept)
sqlMap.update("updateDept", dept);
}

 

 

 

 

DELETE 구문

// ibatis 파일 작성시  ※.모두삭제일때
<delete id="delAllDept">
   delete from departments
</delete>
 
 
 
// Dao 작성시
public void deleteAllDepartments() {
	sqlMap.delete("delAllDept");
}
// ibatis 파일 작성시  ※.조건있는 삭제시 (int 타입)
<delete id="deleteDeptById" parameterClass="int">
	delete from departments
	where department_id = #value#
</delete>



// Dao 작성시
public void deleteById(int deptId) {
	sqlMap.delete("deleteDeptById", deptId);
}
// ibatis 파일 작성시  ※.조건있는 삭제 (스트링 타입)
<delete id="deleteDeptByName" parameterClass="String">
	delete from departments
	where department_name = #value#
</delete>



// Dao 작성시
	public void deleteDeptByName (String deptName) {
	sqlMap.delete("deleteDeptByName", deptName);
}

 

 

 

 

 SELECT 구문

// ibatis 파일 작성시 
<select id="getSeq" resultClass="int">
	selete departments_seq.naxt
	from dual;
</select>



// Dao 구현
public int getDepartmentSeq() {
	int seq = (Integer) sqlMap.queryForObject("getSeq");
	return seq;
}                                    
// ibatis 파일 작성시
<select id="getAllCount" resultClass="int">
	select count(*)
	from departments
</select>



// Dao 구현
public int getAllDepartmentsCount() {
	return (Integer) sqlMap.queryForObject("getAllCount");
}
// ibatis 파일 작성시 조건이 있는경우
<select id="getCountByName" parameterClass="string" resultClass="int">
	select vount(*)
	from departmnets
	where department_name like '%' || #value# || '%'
</select>



//Dao구현
public int getDepartmentsCountByName(String keyword) {
	return (Integer) sqlMap.queryForObject("getCountByName", keyword);
}
// ibatis 파일 작성시 
<select id="getAllDeptNames" resultClass="string">
	select department_name
	from departments
	order by 1
</select>

// Dao 구현
public List<String> getAllDepartmentNames() {
	return (List<String>) sqlMap.queryForList("getAllDeptNames");
}

※. 별칭작성시 ibatis

// ibatis 파일 작성시 값을 넣어야할때 객체안의 변수명과 같게 별칭을 준다.
<select id="getDeptById" parameterClass="int" resultClass="kr.co.hta.vo.Department">
	select 
		department_id         as id,    // as를 써도되고 안써도된다.
		department_name       as name,
		manager_id            as mgrId,
		location_id           as locId
		from departments
	where department_id = #id#
</select>



// Dao 구현
public Department getDepartmentById(int deptId) {
	return (Department) sqlMap.queryForObject("getDeptById", deptId);
}
// ibatis 파일 작성시 별칭주기
<select id="getAllDepts" resultClass="kr.co.hta.vo.Department">
	select 
		department_id   id,
		department_name   name,
		manager_id    mgrId,
		location_id    locId
	from departments
	order by 1
</select>



// Dao구현
public List<Department> getAllDepartments() {
	return (List<Department>) sqlMap.queryForList("getAllDepts");
}
// ibatis 파일 작성시 
<select id="getDepteByRange" parameterClass="map" resultClass="kr.co.hta.vo.Department">
 	select 
 		id, name, mgrId, locId
 	from (
 		select 
 			row_number() over (order by department_id desc) rn,
 			department_id   id,
 			department_name    name,
 			manager_id    mgrId,
 			location_id    locId
 		from departments
 	)
 	where rn >= #begin# and rn <= #end#
 </select>
 
 
 
 // Dao구현
 public List<Department> getDepartmentsByRange(Map<String,m Object> param) {
 	return (List<Department>) sqlMap.queryForList("getDeptByRange", param);
 }

 

 

 

// JSP 구현

 // jsp 구현
 Map<String, Object> searchMap = new HashMap<String, Object>();
 searchMap.put("begin", 11);
 searchMap.put("end", 20);
 List<Departments> departments = deptDao.getDepartmentsByRange(searchMap);

 

 

 
예시)
hr.xml  (ibatis파일)




LocationDao.java   (Dao파일)

 

 

 

-----------------------------------------형상관리도구-------------------------------------------
형상관리도구 종류
            - cvs
            - subVersion
            - git 등등....


위와 같은것들을 아래와 같이 부른다.
            - 형상관리도구
            - 버전관리도구
            - 소스버전관리도구


형상관리도구의 특징
            - 소스개발자정보 저장
            - 소스변경이력 저장
            - 특정날짜의 소스로 환원
            - 소스의 공유(저장소)