package dao;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
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;
public class BoardDao implements Board {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
// 마이바티스 환경 설정 XML 파일 경로
String resource = "resources/mybatis/config-mybatis.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override // 전체 정보 조회
public ArrayList<BoardDto> selectList() {
// 세션 및 트랜잭션 시작
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 조회 매핑 구문 실행
List list = sqlSession.selectList("org.mybatis.persistence.EmpMapper.boardList");
//System.out.println(list);
ArrayList<BoardDto> list2 = (ArrayList<BoardDto>) list;
// for (BoardDto dto : list2) {
// System.out.println(dto);
// }
return list2;
} catch (Exception e) {
e.printStackTrace();
} finally {
// 세션 및 트랜잭션 종료
sqlSession.close();
}
return null;
}
@Override // num값으로 정보 조회
public BoardDto selectOne(Long num, boolean incHits) {
// 세션 및 트랜잭션 시작
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 조회 매핑 구문 실행
BoardDto dto = sqlSession.selectOne("org.mybatis.persistence.EmpMapper.boardselone", num);
if (incHits) {
sqlSession.update("org.mybatis.persistence.EmpMapper.updateHits", num);
sqlSession.commit();
}
return dto;
} catch (Exception e) {
e.printStackTrace();
} finally {
// 세션 및 트랜잭션 종료
sqlSession.close();
}
return null;
}
@Override // 추가
public void insertOne(BoardDto dto) {
// 세션 및 트랜잭션 시작
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 조회 매핑 구문 실행
//sqlSession.selectList("org.mybatis.persistence.EmpMapper.list2");
int res = sqlSession.insert("org.mybatis.persistence.EmpMapper.boardinsert", dto);
System.out.println(res);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 세션 및 트랜잭션 종료
sqlSession.close();
}
}
@Override // 업데이트
public void updateOne(BoardDto dto) {
// 세션 및 트랜잭션 시작
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 조회 매핑 구문 실행
//sqlSession.selectList("org.mybatis.persistence.EmpMapper.list2");
int res = sqlSession.update("org.mybatis.persistence.EmpMapper.boardupdate", dto);
System.out.println(res);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 세션 및 트랜잭션 종료
sqlSession.close();
}
}
@Override // 삭제
public void deleteOne(Long num) {
// 세션 및 트랜잭션 시작
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 조회 매핑 구문 실행
//sqlSession.selectList("org.mybatis.persistence.EmpMapper.list2");
int res = sqlSession.delete("org.mybatis.persistence.EmpMapper.boarddelete", num);
System.out.println(res);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 세션 및 트랜잭션 종료
sqlSession.close();
}
}
@Override // 조회수
public void updateHits(Long num) {
// 세션 및 트랜잭션 시작
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 조회 매핑 구문 실행
//sqlSession.selectList("org.mybatis.persistence.EmpMapper.list2");
sqlSession.update("org.mybatis.persistence.EmpMapper.updateHits", num);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 세션 및 트랜잭션 종료
sqlSession.close();
}
}
}
테스트
Select List
package dao;
import java.util.ArrayList;
public class ListTestEx01 {
public static void main(String[] args) {
BoardDao dao = new BoardDao();
ArrayList<BoardDto> list = dao.selectList();
for(BoardDto dto : list) {
System.out.println(dto);
}
}
}
Select one ( 실행 시 true면 조회수 + 1 )
package dao;
public class SelectOneEx {
public static void main(String[] args) {
BoardDao dao = new BoardDao();
BoardDto dto = dao.selectOne(1L, true);
System.out.println(dto);
}
}
Insert
package dao;
public class InsertTestEx02 {
public static void main(String[] args) {
BoardDao dao = new BoardDao();
BoardDto dto = new BoardDto((long) 0, "테스트119", "테제목", "테내용", null, 0 );
dao.insertOne(dto);
}
}
Delete
package dao;
public class deleteTestEx3 {
public static void main(String[] args) {
BoardDao dao = new BoardDao();
dao.deleteOne(101L);
}
}
Update
package dao;
public class UpdateTestEx {
public static void main(String[] args) {
BoardDao dao = new BoardDao();
BoardDto dto = new BoardDto(100L,"김기철", "제목 114", "내용 114", null, 0);
dao.updateOne(dto);
}
}