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 등등....
위와 같은것들을 아래와 같이 부른다.
- 형상관리도구
- 버전관리도구
- 소스버전관리도구
형상관리도구의 특징
- 소스개발자정보 저장
- 소스변경이력 저장
- 특정날짜의 소스로 환원
- 소스의 공유(저장소)