본문 바로가기
CLASS/SPRING,JSTL

#7-2 / mybatis(ibatis)를 이용 DAO + config,mapper,xml DB연결

by hingu 2024. 7. 22.
⚡ insert 테스트

dbcong.xml 의 하단 bean id="template" 여긴 아직 사용 x
- 주석처리 한 뒤 테스트

- /META-INf/config.xml

<configuration>
	<typeAliases>
		<typeAlias alias="coupndao" type="api.cpdao"></typeAlias> //이름 맘대로
	</typeAliases>
</configuration>


- /META-INf/mapper.xml

<mapper namespace="datadb"> //이름 맘대로
	<insert id="coupon_insert"> //이름 맘대로
		insert into coupon (cidx,cpname,cprate,cpuse,cpdate,indate)
		values ('0',#{cpname},#{cprate},#{cpuse},#{cpdate},now())
	</insert>
</mapper>

- @Controller 
@Inject
private SqlSessionFactory sqlfact;

/*
@Resource //어디선가 쓸거임 아직 x 
private SqlSessionTemplate sqlsession;
*/

@GetMapping("/test_insert.do")
public String test_insert(cpdao dao) {
    try {
        dao.setCpname("2024 연말정산 40% 할인");
        dao.setCprate(40);
        dao.setCpuse("Y");
        dao.setCpdate("2024-12-31");
        /*-프론트가 없어서 강제로 값 넣음-*/

        SqlSession se = this.sqlfact.openSession(); //database연결됨
        se.insert("datadb.coupon_insert",dao); //mapper.xml 에서 복붙
        se.close(); 

    }catch(Exception e) {
        System.out.println("databse 연결 실패");
    }
    return null;
}

-> 프론트가 없어서 값을 강제로 넣음...

- cpdao.java(getter,setter) => db 연결시 dao필수

package api;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class cpdao {
	int cidx,cprate;
	String cpname,cpuse,cpdate,indate;
}

 


👀 순서 정리

1. DAO
2. SqlSession 연결  - dbconfig.xml : config.xml, mapper.xml 연결 (dbconfig.xml에 해당 파일 경로가 작성되어있음)
3. config.xml => java dao파일을 coupondao 연결
4. mapper.xml => ddl 태그(<insert>)에 문법 작성
5. Controller에서 Sql session을 연결
6. ddl 메소드를 호출 ( ddl 태그명 입력 : this.se.insert() ) : insert태그만 찾음( <insert> )
7. mapper에 있는 대표이름 namespace.id ( datadb.coupon_insert )로  dao값을 자동으로 전달

2. dbconfig.xml에 해당 파일 연결되어있음-확인