문제
LPROD 테이블에 새로운 데이터 추가하기
lprod_gu와 lprod_nm은 직접 입력받아서 처리하고, lprod_id는 현재의 lprod_id값 중에 제일 큰값+1 한다
입력받은 lprod_gu가 이미 등록되어 있으면 다시 입력 받아서 처리한다.
(myBatis를 적용한 프로그램으로 변환하시오)
jdbc-mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 이 문서는 myBatis에서 처리할 SQL문을 작성하는 문서입니다 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- <mapper>태그의 namespace속성에 설정된 값은 Java소스에서 실행할 SQL문을 호출할 때
같이 사용되는 이름이다 -->
<mapper namespace="jdbc">
<select id="guChk" parameterType="String" resultType="int">
select 1 from lprod where lprod_gu = #{lprod_gu}
</select>
<insert id="insertLprod" parameterType="lprodVo"> <!-- kr.or.ddit.vo.lprodVO -->
insert into lprod (lprod_id, lprod_gu, lprod_nm)
values (#{lprod_id},#{lprod_gu},#{lprod_nm})
</insert>
<select id="max" resultType="int">
select max(lprod_id) as max from lprod
</select>
</mapper>
JdbcToMybatisTest.java
package kr.or.ddit.basic;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import kr.or.ddit.vo.LprodVO;
// jdbcTest05.java 프로그램 myBatis를 적용한 프로그램으로 변환하시오
//문제 ) LPROD 테이블에 새로운 데이터 추가하기
//lprod_gu와 lprod_nm은 직접 입력받아서 처리하고, lprod_id는 현재의 lprod_id값 중에 제일 큰값+1 한다
//입력받은 lprod_gu가 이미 등록되어 있으면 다시 입력 받아서 처리한다.
public class JdbcToMybatisTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
InputStream in = null;
SqlSessionFactory sqlSessionFactory = null;
try {
in = Resources.getResourceAsStream("kr/or/ddit/mybatis/config/mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
} catch (Exception e) {
// TODO: handle exception
} finally {
if(in!=null)try {in.close();}catch(IOException e) {}
}
SqlSession session = null;
try {
session = sqlSessionFactory.openSession();
int max = session.selectOne("jdbc.max");
String lprod_gu ="";
while(true) {
System.out.print("Lprod_gu >> ");
lprod_gu = scan.next();
// 만약에 데이터가 없으면 null값으로 나오기 때문에 int로 받지 못함.
if(session.selectOne("jdbc.guChk", lprod_gu)==null){
break;
}
}
System.out.print("Lprod_nm >> ");
String lprod_nm = scan.next();
LprodVO vo = new LprodVO();
vo.setLprod_gu(lprod_gu);
vo.setLprod_id(++max);
vo.setLprod_nm(lprod_nm);
int insertChk = session.insert("jdbc.insertLprod",vo);
if(insertChk>0) {
session.commit();
System.out.println("작업 성공");
} else {
System.out.println("작업 실패");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(session!=null) try { session.close(); } catch(Exception e) {}
}
}
}
'JAVA > HIGH JAVA' 카테고리의 다른 글
5/24 Homework - 게시판 mybatis적용 (0) | 2024.05.24 |
---|---|
[JAVA] mybatis - session유틸, 전화번호관리 mybatis (0) | 2024.05.24 |
[JAVA] MyBatis (0) | 2024.05.22 |
5/21 Homework - 게시판 만들기 (0) | 2024.05.21 |
[JAVA] SingleTon (0) | 2024.05.21 |