본문 바로가기

Dev/[Java]

[Spring] 7. Mapper 써보기

반응형

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);
		
	}
반응형