package org.joonzis.ex;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.joonzis.mybatis.DBService;
public class GreenDao {
// 필드
private SqlSessionFactory factory = null;
// 싱글톤
private GreenDao() {// 기본 생성자(외부에서 접근할 수 없게 private 처리)
factory = DBService.getFactory();
}
private static GreenDao dao = new GreenDao();
public static GreenDao getInstance() {
return dao;
}
/*
openSession() select문에서 사용(커밋을 하지 않음)
openSession(true) 자동커밋
openSession(false) 수동커밋
sqlSession의 메소드 종류
1.selectList("mapper에서 사용할 id") --검색 결과가 여러 개 일때 List(테이블)
2.selectList("mapper에서 사용할 id" 파라미터) --파라미터 전달 시
3.selectOne("mapper에서 사용할 id") --검색 결과가 한개 일 때 (테이블)
4.selectOne("mapper에서 사용할 id" 파라미터)
5.insert("mapper에서 사용할 id" 파라미터)
6.update("mapper에서 사용할 id")
7.delete("mapper에서 사용할 id")
각 메소드의 두 번째 인자 값으로 파라미터를 던질 수 있다
던질 파라미터가 없을 시 생략
*/
//DAO-쿼리작성,데이터가공 -> jsp <-> DAO-연결 <-> Mapper-쿼리
// 메소드
//1.전체검색
public List<GreenVO> getAllList(){
SqlSession sqlSession = factory.openSession();//sqlSession 받아오기
List<GreenVO> list = sqlSession.selectList("select_all");//mapper가있으면 select_all문자열에 ,하고 mapper넣어주면 두개가 들어간다
sqlSession.close();
return list;
}
public GreenVO getselectone(String id){
SqlSession sqlSession = factory.openSession();
GreenVO list = sqlSession.selectOne("view_one",id);
sqlSession.close();
return list;
}
//2.회원 추가
public int getInsert(GreenVO vo) {
SqlSession sqlSession = factory.openSession(false);//수동커밋
int result = sqlSession.insert("insert", vo);
if(result > 0) {
sqlSession.commit();
}
sqlSession.close();
return result;
}
//3.회원 삭제
public int getRemove(GreenVO vo) {
SqlSession sqlSession = factory.openSession(false);
int result = sqlSession.delete("delete", vo);
if(result > 0) {
sqlSession.commit();
}
sqlSession.close();
return result;
}
//4.회원 수정 정보 가져오기 (테이블의 리턴타입으로 int string , 여러개의 데이터를 가져올때 list로 가져온다 하나의 데이터는 vo )
public int getUpdate(GreenVO vo) {
SqlSession sqlSession = factory.openSession(false);
int result = sqlSession.update("update", vo);
if(result > 0) {
sqlSession.commit();
}
sqlSession.close();
return result;
}
}