반응형
오늘은 MyBatis를 이용해서 dao를 out 시켰다.
package com.lec08.dao;
import java.io.Reader;
import java.util.List;
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 org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class CtxMybatisCallTest {
public static void main(String[] args) {
String xmlFile08 = "C:\\IT\\S3917_J11\\workspace_sts3\\spring3_prj\\src\\main\\webapp\\WEB-INF\\spring\\lec08-servlet-context.xml";
ApplicationContext ctx = new FileSystemXmlApplicationContext(xmlFile08);
//----------------------------------------------------------------------------
// Mybatis DBCP 설정을 통한 DB 연결
// - 설정파일 : src/main/resources/mybatis-context.xml
// - 매퍼파일 : src/main/resources/user-map.xml
//----------------------------------------------------------------------------
// Mybatis session build
String path = "mybatis-context-lec08.xml";
Reader reader;
try {
reader = Resources.getResourceAsReader(path);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
if(sqlSessionFactory == null)
System.out.println("err");
else
System.out.println("Mybatis session build ok");
SqlSession session = sqlSessionFactory.openSession();
UserVO uvo = new UserVO();
// 한명 출력
uvo.setUser_seq(4);
uvo = (UserVO) session.selectOne("userNameSpace.selectUserOne", uvo);
System.out.println("한명출력: " + uvo.getUser_name());
System.out.println();
// 전체 출력
List<UserVO> userList = session.selectList("userNameSpace.selectUser");
System.out.println("전체출력:");
for (UserVO user : userList) {
System.out.println(user.getUser_id() + " " + user.getUser_name() + " " + user.getUser_gubun() + " " + user.getRegdate());
}
System.out.println();
// 삽입
UserVO newUser = new UserVO();
newUser.setUser_seq(5); // 새로운 user_seq 값을 설정
newUser.setUser_id("newUser");
newUser.setUser_pw("password");
newUser.setUser_name("New User");
newUser.setUser_gubun("G");
int insertCount = session.insert("userNameSpace.insertUser", newUser);
session.commit(); // 삽입 후 커밋
System.out.println("삽입된 레코드 수: " + insertCount);
// 삽입된거 확인
userList = session.selectList("userNameSpace.selectUser");
System.out.println("삽입 후 전체출력:");
for (UserVO user : userList) {
System.out.println(user.getUser_id() + " " + user.getUser_name() + " " + user.getUser_gubun() + " " + user.getRegdate());
}
System.out.println();
// 수정 시도
newUser.setUser_name("Updated User");
newUser.setUser_gubun("U");
int updateCount = session.update("userNameSpace.updateUser", newUser);
session.commit(); // 수정 후 커밋
System.out.println("수정된 레코드 수: " + updateCount);
// 수정 확인
userList = session.selectList("userNameSpace.selectUser");
System.out.println("수정 후 전체출력:");
for (UserVO user : userList) {
System.out.println(user.getUser_id() + " " + user.getUser_name() + " " + user.getUser_gubun() + " " + user.getRegdate());
}
System.out.println();
// 삭제 시도
int deleteCount = session.delete("userNameSpace.deleteUser", newUser);
session.commit(); // 삭제 후 커밋
System.out.println("삭제된 레코드 수: " + deleteCount);
// 삭제 확인
userList = session.selectList("userNameSpace.selectUser");
System.out.println("삭제 후 전체출력:");
for (UserVO user : userList) {
System.out.println(user.getUser_id() + " " + user.getUser_name() + " " + user.getUser_gubun() + " " + user.getRegdate());
}
System.out.println();
session.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
my batis call test
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userNameSpace">
//property = vo에 있는 변수명, column = db에 있는 컬럼명
//보통 select로 읽어올때 알리어스를 이용해서 vo의 이름으로 맞추거나
//vo를 db 컬럼명과 같게 할 수 있지만
//대부분은 변수명의 카멜 케이스를 유지 하고 알리어스를 이용하는 전자의 방식을 많이 사용한다.
<resultMap id="userResultMap" type="com.lec08.dao.UserVO">
<id property="user_seq" column="user_seq" />
<result property="user_id" column="user_id" />
<result property="use_pw" column="use_pw" />
<result property="user_name" column="user_name" />
<result property="user_gubun" column="user_gubun" />
<result property="regdate" column="regdate" />
</resultMap>
<!-- SelectOne -->
<select id="selectUserOne" resultType="com.lec08.dao.UserVO">
SELECT user_seq, user_id,
user_pw, user_name, user_gubun, regdate
FROM users3
WHERE user_seq=#{user_seq}
</select>
<!-- Select -->
<select id="selectUser" resultType="com.lec08.dao.UserVO">
SELECT *
FROM users3
</select>
<!-- Insert -->
<insert id="insertUser" parameterType="com.lec08.dao.UserVO">
insert into
users3(user_seq, user_id, user_pw, user_name)
VALUES (#{user_seq}, #{user_id}, #{user_pw}, #{user_name})
</insert>
<!-- Update -->
<update id="updateUser" parameterType="com.lec08.dao.UserVO">
update users3
set user_id = #{user_id},
user_pw = #{user_pw},
user_name = #{user_name},
user_gubun = #{user_gubun}
where user_seq = #{user_seq}
</update>
<!-- Delete -->
<update id="deleteUser" parameterType="com.lec08.dao.UserVO">
delete from users3
where user_seq = #{user_seq}
</update>
</mapper>
user-map-lec08.xml
반응형
'KOSTA교육 > 수업' 카테고리의 다른 글
[51/100] 240626 (0) | 2024.06.26 |
---|---|
[50/100] 240625 (0) | 2024.06.25 |
[48/100] 240621 (0) | 2024.06.21 |
[47/100] 240620 (0) | 2024.06.20 |
[46/100] 240619 (0) | 2024.06.19 |