반응형
Mapper 인터페이스
- Mapper인터페이스는 mapping파일에 기재된 SQL을 호출하기 위한 인터페이스
- Mapper인터페이스는 SQL을 호출하는 프로그램을 Type Safe 하게 기술하기 위해 MyBatis3.x부터 등장
- Mapping 파일에 있는 SQL을 자바 인터페이스를 통해 호출할 수 있도록 해줌
- UserMapper인터페이스는 개발자가 작성
Mapper 인터페이스를 사용하지 않을 경우..
- SQL을 호출하는 프로그램은 SqlSession의 메서드의 아규먼트를 문자열로 "네임스페이스 . SQL ID" 로 지정해야 함.
- 문자열로 지정하기 때문에 오타에 의해 버그가 숨어있거나 IDE에서 제공하는 code assis를 사용할 수 없다.
1. 인터페이스를 하나 만들어준다.
package myspring.user.dao.mapper;
import java.util.List;
import myspring.user.vo.UserVO;
public interface UserMapper {
UserVO selectUserByUserid(String userid);
List<UserVO> selectUserList();
int insertUser(UserVO user);
int updateUser(UserVO user);
int deleteUser(int id);
}
2. Mapper.xml파일의 Namespace를 수정해준다.(인터페이스 파일의 경로를 지정해주면 된다)
3. 인터페이스를 구현하는 구현클래스를 하나 만들어준다.
포인트는... UserMapper userMapper를 선언하고 이걸 쓰는 것이다.
package myspring.user.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import myspring.user.dao.mapper.UserMapper;
import myspring.user.vo.UserVO;
@Repository
public class UserDAOImpl implements IUserDAO {
@Autowired
private UserMapper userMapper;
//@Autowired
// private SqlSession session;
//
//
// //@Autowired 말고 이렇게 써도 된다..
// private final SqlSession session;
//
// public UserDAOImpl(SqlSession session) {
// this.session = session;
// // TODO Auto-generated constructor stub
// }
//
// User 1건 조회
@Override
public UserVO getUser(String userid) {
//return session.selectOne("userNS.selectUserByUserid", userid);
return userMapper.selectUserByUserid(userid);
}
// UserList
@Override
public List<UserVO> getUsers() {
//List<UserVO> userList;
return userMapper.selectUserList();
}
@Override
public int insertUser(UserVO user) {
return userMapper.insertUser(user);
}
@Override
public int updateUser(UserVO user) {
return userMapper.updateUser(user);
}
@Override
public int deleteUser(int id) {
return userMapper.deleteUser(id);
}
}
4. 테스트 소스코드
@Autowired
UserMapper mapper;
@Test
public void mapper() {
// Select one user
//UserVO user = mapper.selectUserByUserid("gildong");
//System.out.println(user);
// Select all users;
// List<UserVO> users = mapper.selectUserList();
// for (UserVO userVO : users) {
// System.out.println(userVO);
// }
// insert user;
// int insertCount = 0;
// UserVO user = new UserVO("kongkong","콩콩","남","사천");
// insertCount = mapper.insertUser(user);
// System.out.println(insertCount);
// update user
// int updateCount = 0;
// UserVO user = new UserVO("kongkong","콩콩콩1","남","사천");
// updateCount = mapper.updateUser(user);
// System.out.println(updateCount);
// delete user
mapper.deleteUser(7);
}
반응형
'Dev > [Java]' 카테고리의 다른 글
[Spring] 9. Spring MVC 직접해보기 (0) | 2021.02.02 |
---|---|
[Spring] 8. Spring MVC (0) | 2021.02.02 |
[Spring] 5. Database Connection Pool (DBCP)써보기, MyBatis Spring (0) | 2021.02.01 |
[Spring] 4. DI전략 3단계 (0) | 2021.02.01 |
[JAVA공부] 이클립스 단축키 정리 (0) | 2021.01.30 |