-
[spring] mybatis: sqlSession&xml 방법 v.s 인터페이스&xml방법JAVA 2021. 8. 18. 17:39
'이름' 매핑의 경우
mapper.xml 과 @Repository,@Service,@Controller 에서 말하는 이름이 다르다.
해당 포스터 맨 아래 단과 아래 참고.
2021.08.18 - [JAVA] - @Autowired @Resource @Inject
@Autowired @Resource @Inject
@Autowired @Resource @Inject @Autowired @Resource @Inject 의존 Spring Java Javax 사용 가능 위치 - 필드 - 생성자 - setter - 필드 - 파라미터가 한 개인 setter - 필드 - 생성자 - setter Bean 검색 우선순..
docc-storage.tistory.com
sqlSession&xml 방법
- mapper.xml
<mapper namespace="board"> <!-- insert 글쓰기, 답글쓰기 --> <insert id="insertDao" parameterType="co.kr.memboard.dto.BardoDTO"> insert into board(writer,subject,pw,regdate,ref,re_step,re_level,content,ip) values(#{writer},#{subject},#{pw},NOW(),#{ref},#{re_step},#{re_level},#{content},#{ip}) </insert> </mapper>
- Controller
sqlSession 을 사용
mapper 의 namespace 와 CRUD 태그의 id 로 DB 접근 가능.
@Controller public class BoardController { @Autowired private SqlSession sqlSession;//변수, setter 자동으로 된다. //DB글 쓰기 @RequestMapping(value="writePro.do",method=RequestMethod.POST) public String writePro(@ModelAttribute("boardDTO")BoardDTO boardDTO, HttpServletRequest request) { //생략... sqlSession.insert("board.insertDao",boardDTO);//글 DB저장 return "redirect:list.do"; }//writePro()-end }
인터페이스&xml방법
- 인터페이스
//인터페이스 @Repository("memberMapper") @Mapper public interface MemberMapper { //id 중복체크, 내 정보 수정 public MemberDTO selectOne(String id) throws Exception; }
- mapper.xml
이 방법에서 namespace 의 속성에 작성할 이름은 sqlSession 이 사용하는 값이 아니며,
인터페이스를 통해 사용될 예정이므로 @Repository 인인터페이스의 경로값과 일치해야 한다.
@Repository("이름") 으로 정한 이름이 아니다!!
매핑 실패
<mapper namespace="memberMapper"> <!-- id중복 체크, 내 정보 수정 --> <select id="selectOne" parameterType="String" resultType="com.example.memboard.dto.MemberDTO"> select * from member where id=#{id} </select> </mapper>
매핑 성공
<mapper namespace="com.example.memboard.mapper.MemberMapper"> <!-- id중복 체크, 내 정보 수정 --> <select id="selectOne" parameterType="String" resultType="com.example.memboard.dto.MemberDTO"> select * from member where id=#{id} </select> </mapper>
- Service
mapper.xml 과 다르게 service 나 controller 에서는 주입을 받을 때 이름 설정시
해당 이름을 @Repository("이름") 으로 정한 이름으로 해준다.
@Service("memberService") public class MemberService { @Resource(name="memberMapper") MemberMapper memberMapper; }
- Controller
@Controller public class MemberController { @Resource(name="memberService") MemberService mService; }
'JAVA' 카테고리의 다른 글
[ajax] 서버와 컨트롤러에서 받는 값 (0) 2021.08.19 [ajax] @RequestBody @ResponseBody JSON.stringify() (0) 2021.08.19 [spring] Starter Project,Legacy Project : xml Mapper 설정 차이 (0) 2021.08.18 @Autowired @Resource @Inject (0) 2021.08.18 [spring] resultMap 사용하기 (0) 2021.08.17