2) @어노테이션을 이용한 Mybatis 사용 : sql문장을 interface의 추상메소드와 연결.
① SqlMapperInter Interface작성 (DataMapper.xml를 대신함 - 삭제)
public interface SqlMapperInter {
@Select("select * from membertab")
public List<DataDto> selectDataAllMember();
@Select("select id, name, passwd, reg_date from membertab where id = #{id}")
public DataDto selectDataPart(String id);
@Insert("insert into membertab values(#{id},#{name},#{passwd},now())")
public int insertData(DataFormBean bean);
@Update("update membertab set name=#{name} where id=#{id}")
public int updateData(DataFormBean bean);
@Delete("delete from membertab where id = #{id}")
public int deleteData(String id);
}
② Configuration.xml 내 DataMapper와 연결된 <mapper>태그 및 alias태그 삭제
③ SqlMapConfig에서
public class SqlMapConfig { // 메뉴얼 확인하여 작성.
public static SqlSessionFactory sqlSession; // DB의 SQL 명령 실행을 위한 메소드를 가진 객체.
static {
String resource = "pack/mybatis/Configuration.xml";
try {
Reader reader = Resources.getResourceAsReader(resource);
// Configuration.xml을 읽는다.
sqlSession = new SqlSessionFactoryBuilder().build(reader);
// sqlSession 객체를 생성한다.
reader.close();
- 하기 code 추가 : sqlSession에 @를 연결.
//Mybatis Annotation을 사용할 경우 추가해야할 코드
Class[] mappers = {SqlMapperInter.class/*,SqlMapperInter2.class ..*/};
for(Class m:mappers) {
//Mapper 등록
sqlSession.getConfiguration().addMapper(m);
}
} catch (Exception e) {
System.out.println("SqlMapConfig err"+e);
}
}
public static SqlSessionFactory getSqlSession() {
return sqlSession;
}
}
④ ProcessDao 수정 : interface의 sql문을 get하도록 수정.
SqlMapperInter inter = sqlSession.getMapper(SqlMapperInter.class); // sql문을 가져온다.
list = inter.selectDataAllMember();
public class ProcessDao {
private SqlSessionFactory factory = SqlMapConfig.getSqlSession();
public List<DataDto> selectDataAllMember(){
SqlSession sqlSession = factory.openSession();
List<DataDto> list =null;
try {
SqlMapperInter inter = sqlSession.getMapper(SqlMapperInter.class); // sql문을 가져온다.
list = inter.selectDataAllMember();
//list = sqlSession.selectList("selectDataAll");
} catch (Exception e) {
System.out.println("selectDataAllMember err"+e);
}finally {
if(sqlSession!=null)sqlSession.close();
}
return list;
}
public DataDto selectDataPart(String id) {
SqlSession sqlSession = factory.openSession();
DataDto dto = null;
try {
SqlMapperInter inter = sqlSession.getMapper(SqlMapperInter.class); // sql문을 가져온다.
dto = inter.selectDataPart(id);
//dto = sqlSession.selectOne("selectDataPart", id);
} catch (Exception e) {
System.out.println("selectDataPart err"+e);
}finally {
if(sqlSession!=null)sqlSession.close();
}
return dto;
}
public boolean insertData(DataFormBean bean) {
boolean b = false;
SqlSession sqlSession = factory.openSession();
try {
SqlMapperInter inter = sqlSession.getMapper(SqlMapperInter.class); // sql문을 가져온다.
if(inter.insertData(bean)>0) {
//if(sqlSession.insert("insertData", bean)>0) {
b=true;
sqlSession.commit();
}
} catch (Exception e) {
System.out.println("insertData err"+e);
sqlSession.rollback();
}finally {
if(sqlSession != null) sqlSession.close();
}
return b;
}
public boolean updateData(DataFormBean bean) {
boolean b = false;
SqlSession sqlSession = factory.openSession();
try {
SqlMapperInter inter = sqlSession.getMapper(SqlMapperInter.class); // sql문을 가져온다.
// 비밀번호 비교 후 수정여부 판단.
DataDto dto = inter.selectDataPart(bean.getId());
//DataDto dto = selectDataPart(bean.getId());
if(dto.getPasswd().equals(bean.getPasswd())) {
if(inter.updateData(bean) >0) {
//if(sqlSession.update("updateData", bean)>0) {
b=true;
sqlSession.commit();
}
}
} catch (Exception e) {
System.out.println("updateData err"+e);
sqlSession.rollback();
}finally {
if(sqlSession != null) sqlSession.close();
}
return b;
}
public boolean deleteData(String id) {
boolean b = false;
SqlSession sqlSession = factory.openSession();
try {
SqlMapperInter inter = sqlSession.getMapper(SqlMapperInter.class); // sql문을 가져온다.
int cou = inter.deleteData(id);
//int cou = sqlSession.delete("deleteData", id);
if(cou>0) {
b=true;
sqlSession.commit();
}
} catch (Exception e) {
System.out.println("deleteData err"+e);
sqlSession.rollback();
}finally {
if(sqlSession != null) sqlSession.close();
}
return b;
}
'BACK END > Servlet' 카테고리의 다른 글
[Servlet] Servlet 정리 10 - MCV pattern (0) | 2021.01.07 |
---|---|
[Servlet] Servlet 정리8 - Mybatis (0) | 2021.01.06 |
[Servlet] Servlet 정리7 - JDBC (0) | 2021.01.06 |
[Servlet] Servlet 정리6 - EL, JSTL (0) | 2021.01.04 |
[Servlet] Servlet 정리5 - Ajax (0) | 2021.01.03 |