환경 : Win7, java7, Eclipse Kepler, Mysql 5.6, Mybatis 3.0.6
LIB : MyBatis + MysqlConnector
mybatis mysql.zip1. 이클립스 Dynamic Web Project 생성
(프레임워크에 따라 다르기 때문에 Console까지만 구현)
2. 각 파일 생성
<그림 1>
MyBatisConnectionFactory.java : SqlSessionFactory 를 생성, SqlMapConfig.xml 과 매핑
UserDAO.java : sqlSessionFactory를 통해 DB와 데이터 교환
User.java : User Bean
UserMapper.java : java 매핑용
UserMapper.xml : xml 매핑용
Test.java : Test용 main메소드(웹환경은 Servlet, Struts, Sping 알아서)
SqlMapConfig.xml : DB 정보, Mapper 정보 등록
3. 소스보기
test/Test.java
import com.exam.dao.UserDAO; import com.exam.domain.user.User; public class Test{ public static void main(String[] args) { UserDAO dao = new UserDAO(); User user = new User(); // // user = dao.getUser(new String("kkk@digi.com")); // // System.out.println(user.toString()); user.setEmail("kj@digi.com"); user.setPassword("321321"); user.setName("kj"); user.setAge(27); dao.insert(user); } }
com/exam/dao/MyBatisConnectionFactory.java
import java.io.FileNotFoundException; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.exam.mapper.user.UserMapper; public class MyBatisConnectionFactory { private static SqlSessionFactory sqlSessionFactory; static{ try{ String resource = "SqlMapConfig.xml"; Reader reader = Resources.getResourceAsReader(resource); if(sqlSessionFactory == null){ sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, "development"); // sqlSessionFactory.getConfiguration().addMapper(UserMapper.class); } }catch(FileNotFoundException e){ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } }
com/exam/dao/UserDAO.java
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import com.exam.domain.user.User; import com.exam.mapper.user.UserMapper; public class UserDAO { // UserMapper.xml 의 NameSpace private static final String NAMESPACE = "User."; // UserDAO가 호출될때 생성자를 통해 sqlSessionFactory 생성 private SqlSessionFactory sqlSessionFactory; public UserDAO(){ sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory(); } // xml을 통한 매핑 public void insert(User user){ System.out.println("## UserDAO insert() 진입"); // session Open SqlSession session = sqlSessionFactory.openSession(); try{ // UserMapper.xml => (NameSpace)User.(id)insert 에 user 객체 매칭 session.insert(NAMESPACE+"insert", user); // 커밋 session.commit(); System.out.println("## insert 성공"); }catch(Exception e){ session.rollback(); e.printStackTrace(); System.out.println("## insert 실패"); }finally{ // 사용후엔 닫아주자 session.close(); } } // java를 통한 매핑 public User getUser(String email){ SqlSession session = sqlSessionFactory.openSession(); try{ // 새로운 mapper를 생성 UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUser(email); return user; }finally{ session.close(); } } }
com/exam/domain/user/User.java
public class User { private Integer no; private String email; private String password; private String name; private Integer age; public Integer getNo() { return no; } public void setNo(Integer no) { this.no = no; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User [no=" + no + ", email=" + email + ", password=" + password + ", name=" + name + ", age=" + age + "]"; } }
com/exam/mapper/user/UserMapper.java
import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import com.exam.domain.user.User; public interface UserMapper { final String getUser = "SELECT * FROM EXAM.USER " + "WHERE email = #{EMAIL}"; // @Select(위의 String getUser 임) @Select(getUser) // property = User.java 의 속성, column = DB의 컬럼 @Results( value={ @Result(property="no", column="NO"), @Result(property="email", column="Email"), @Result(property="password", column="PASSWORD"), @Result(property="name", column="NAME"), @Result(property="age", column="AGE"), } ) User getUser(String email); // email을 이용해 User 객체로 DB 결과값 리턴함 }
com/exam/mapper/user/UserMapper.xml
아래 xml 선언 포함 추가
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
INSERT INTO EXAM.USER ( EMAIL ,PASSWORD ,NAME ,AGE )values( #{email} ,#{password} ,#{name} ,#{age} )
SqlMapConfig.xml
아래 xml 선언 포함 추가
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
4. 대충의 순서
!!! XML 태그 대소문자 주의!!!(대문자가 소문자로 바뀌어있음...)
'IT > 언어' 카테고리의 다른 글
POI Excel 파일 쓰기 (0) | 2014.06.26 |
---|---|
XStream 사용(_ 중복 출력 해결) & XML to JSON (0) | 2014.06.20 |
JDBC 설정 (0) | 2014.06.19 |
[MyBatis] SqlSessionFactory (0) | 2014.06.19 |
[LIB] ESAPI 로 XSS 방어 (0) | 2014.05.30 |