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

+ Recent posts

1