-> 같은 의미로 활용된다
)dao
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import db.vo.VisitVo;
import service.DBService;
import service.MyBatisConnector;
public class VisitDao {
SqlSessionFactory factory;
// single-ton pattern : 객체 1개만 생성해서 이용하자
static VisitDao single = null;
public static VisitDao getInstance() {
//없으면 생성해라
if (single == null)
single = new VisitDao();
return single;
}
// 외부에서 객체생성하지 말아라...
private VisitDao() {
factory = MyBatisConnector.getInstance().getSqlSessionFactory();
}
//목록조회
public List<VisitVo> selectList() {
List<VisitVo> list = null;
// 1.SqlSession얻어오기
SqlSession sqlSession = factory.openSession(); // Connection획득
// 2.작업수행
list = sqlSession.selectList("visit.visit_list");
// 3.닫기 conn.close()과정포함
sqlSession.close();
return list;
} // end - selectList()
public int insert(VisitVo vo) {
// TODO Auto-generated method stub
int res = 0;
// 1.SqlSession얻어오기
SqlSession sqlSession = factory.openSession(); // Connection획득
// 2.작업수행
res = sqlSession.insert("visit.visit_insert",vo);
if(res==1)
sqlSession.commit();
// 3.닫기 conn.close()과정포함
sqlSession.close();
return res;
}//end:insert()
public int delete(int idx) {
// TODO Auto-generated method stub
int res = 0;
// 1.SqlSession얻어오기 true <- auto commint 옵션
SqlSession sqlSession = factory.openSession(true); // Connection획득
// 2.작업수행
res = sqlSession.delete("visit.visit_delete",idx);
// 3.닫기 conn.close()과정포함
sqlSession.close();
return res;
}//end:delete()
// 일부만 조회
public VisitVo selectOne(int idx) {
VisitVo vo = null;
// 1.SqlSession얻어오기 true <- auto commint 옵션
SqlSession sqlSession = factory.openSession(true); // Connection획득
// 2.작업수행
vo = sqlSession.selectOne("visit.visit_one",idx);
// 3.닫기 conn.close()과정포함
sqlSession.close();
return vo;
}
public int update(VisitVo vo) {
// TODO Auto-generated method stub
int res = 0;
// 1.SqlSession얻어오기 true <- auto commint 옵션
SqlSession sqlSession = factory.openSession(true); // Connection획득
// 2.작업수행
res = sqlSession.update("visit.visit_update",vo);
// 3.닫기 conn.close()과정포함
sqlSession.close();
return res;
}//end:update()
}
)xml
<?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="visit">
<!-- 전체조회 -->
<select id="visit_list" resultType="visit">
select
rownum as no, v.*
from
(select * from visit order by idx desc) v
</select>
<!-- 추가
parameter가 객체(VisitVo)로 전달되면 mybatis parameter변수는
VO내의 속성명을 이용할 수 있다.
-->
<insert id="visit_insert" parameterType="db.vo.VisitVo">
insert into visit values(
seq_visit_idx.nextVal,
#{ name },
#{ content },
#{ pwd },
#{ ip },
sysdate
)
</insert>
<!-- 삭제 -->
<delete id="visit_delete" parameterType="int">
delete from visit where idx = #{ idx }
</delete>
<!-- 한건만 조회 -->
<select id="visit_one" resultType="db.vo.VisitVo" parameterType="int">
select * from visit_view where idx = #{ idx }
</select>
<!-- 수정 -->
<update id="visit_update" parameterType="db.vo.VisitVo">
update visit set name=#{ name },
content=#{ content },
pwd=#{ pwd },
ip=#{ ip },
regdate=sysdate
where idx=#{ idx }
</update>
</mapper>
-> 그러나, 실제로 등록이 되지 않는다 (트랜잭션 때문)
-> 코드 추가해주기
아니면 -> openSessin()을 true로 설정하기
'ORM' 카테고리의 다른 글
ORM - 마이바티스 - 테이블 간 연결 조회(서브쿼리)/resultMap의 사용 (0) | 2024.07.11 |
---|---|
ORM - 마이바티스 - 검색 기능(동적쿼리 처리)/방명록, 사원 예제 (0) | 2024.07.11 |
ORM - 마이바티스 템플릿/ 전체 템플릿(24.0711) (0) | 2024.07.11 |
ORM - 마이바티스 - 사원테이블 조회 예제 (0) | 2024.07.10 |
ORM - 마이바티스/설정 (0) | 2024.07.10 |