#Spring 12

제로·2023년 1월 29일
0

Spring

목록 보기
12/18

1. resultType과 resultMap

  1. select의 결과로 다중행을 가져올 때, db의 컬럼명과 property가 동일하면 resultType을 사용하고, 다르게 설정해야하는 경우 resultMap을 사용한다.
# resultMap 예시 1
	select empno no, ename name from emp

참조할 emp VO에 변수가 empno, ename으로 저장되어 setEmpno, setEname으로 property가 설정되어 있는데, db에서 컬럼명을 empno는 no로 ename을 name으로 가져오려고 한다면

<resultMap id="empRst" type="emp"> 
// id명은 적절하게 선언 type은 property를 가져올 vo
	<result property="empno" column="no">
    <result property="ename" column="name">
</resultMap>

<select id="getEmpList" resultMap="empRst">
// id는 dao 인터페이스에서 사용할 메서드명, resultMap에 위에 선언한 id 작성
	select empno no, ename name from emp
</select>

# resultMap 예시 2

select empno, dname from emp e, dept d where e.deptno=d.deptno

참조할 VO를 아래와 같이 emp와 dept를 혼합하여 변수로 선언한 경우
public class EmpDept{
	private Emp emp;
    private Dept dept;
}

<reslutMap id="empdept" type="empdept">
	<association property="emp" javaType="emp">
    	<result column="empno" property="empno">
        <result column="deptno" property="deptno"/>
    </association>
    <association property="dept" javaType="dept">
    	 <result column="deptno" property="deptno"/>
    	<resutl column="dname" property="dname"/>
    </association>
    
<select id="getEmpDeptList" type="empdept">
	select empno, dname from emp e, dept d where e.deptno=d.deptno
</select>
 /* 
 1) association 에서 property는 EmpDept클래스에 선언한 변수명이고, javaType은 configuration으로 사용하는 공통 xml에서 alias로 선언한 클래스의 참조명을 적으면 된다. ( <typeAlias alias="emp" type="springweb.z01_vo.Emp"/> ) 
2) result에서 column은 sql문의 db 컬럼명을 적으면 되고, property는 association에 property로 적은 각 클래스에서 가져올 변수명을 적는다. 
*/


main에서 데이터를 가져올 때는 EmpDept ed = dao.getEmpDeptList();
	System.out.println(ed.getEmp().getEmpno()+", "+ed.getDept().getDname()) 으로 출력할 수 있다

2. mybatis parameter

  1. 단일 매개변수 입력하기 (ex: DB데이터 삭제)
# dao interface
	public void delEmp(int empno);

# mapper
	<delete id="delEmp" parameterType="int">
			delete from emp100 where empno=#{empno}
	</delete>
   - parameter로 입력되는 값은 #{}로 표기한다 
  1. 다중 매개변수 입력하기 (ex : DB데이터 등록)
# dao interface
	public void insertEmp(Emp ins);
    
# mapper
	<insert id="insertEmp" parameterType="emp">
		insert into emp100 values(emp_seq.nextval, #{ename}, #{job},#{mgr}, sysdate, #{sal}, #{comm}, #{deptno})
	</insert>		
profile
아자아자 화이팅

0개의 댓글

관련 채용 정보