★ mybatis사용하기위한 준비 / 순서
blog.mybatis.org -> mybatis3 -> download -> mybatis-3.4.6.zip
lib파일 안에 ojdbc.jar파일과 mybatis-3.4.6.jar파일 추가!!
프로젝트 우클릭 -> configure build path -> libraries -> add jars -> 적용
* mybatis
★★mybatis를 사용할때에는 DTO에 반드시 기본생성자가 하나 있어야한다.
- POJO(Plain Old Java Object) :: 구현(implements) 받지 않은 순수한 일반 클래스 객체
특정 자바 모델이나 기능, 프레임워크 등을 따르지 않은 자바 오브젝트를 지칭하는 말로 사용되었다.
스프링 프레임워크는 POJO 방식의 프레임워크
- 퍼시스턴스 프레임워크 :: 클래스내에서 쓰던 SQL문들을 밖으로 다 꺼내서 모아두는 방식.
ex)prepareStatment("SELECT * from table where num =?");
1. 커넥션 연결할 xml파일 생성(이 xml파일은 반드시 mybatis-3-config.dtd)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?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"> <configuration> <properties resource="db.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mybatis/memberMapper.xml" /> </mappers> </configuration> | cs |
resource :: 연결할 driver / url / username / password 값이 저장된 properties파일 생성
username과 password만 자기가 연결할 계정과 비밀번호를 입력하면 된다.
내 본인 pc에서 사용하는 localhost가아니면 변경.
1 2 3 4 | driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@localhost:1521:xe username=scott password=tiger | cs |
pooled로 자동 커넥션 풀 생성.
기존 properties에 저장했으므로 el로 꺼낼 수 있다.
property에 연결할 이름에 value값으로 'el'로 꺼내 저장한다.
2. sql 쿼리문을 담아놓을 새로운 xml파일 생성해서,
위의 mappers안에 resource로 새로운 xml파일 경로를 설정한다.
그 경로는 src 밑에서부터 시작한다. (이 xml파일은 반드시 mybatis-3-mapper.dtd)
★preparedStatement를 사용하기때문에 바인딩변수로 저장이 가능하다.
넘겨줄 값이 필요할때에는 #{변수명} 으로 넣는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?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"> <mapper namespace="member"> <insert id ="addMem" parameterType="test.vo.MembersVo"> insert into mem values( #{id},#{pwd},#{email},#{phone},#{regdate} ) </insert> <select id ="getlist" resultType="test.vo.MembersVo"> select * from mem </select> </mapper> | cs |
select는 타입을 resultType으로 getter/setter를 만든 DTO를 설정하고 (반환타입 ResultSet)
insert / update / delete 는 parameterType으로 DTO를 설정한다.(반환타입 Int)
member라는 이름으로 insert는 addMem , select는 getlist로 설정한 상태에서
사용할때에는 member.addMem / member.getlist로 사용하면된다.
resultType, parameterType에 저장할 클래스명을 적어주면
알아서 객체만들고 테이블의 컬럼이름과 변수명이 같은걸 자동으로 짝지어서 저장해준다.
3. 실행
1 2 3 4 5 6 7 8 9 | String res = "config.xml"; try { InputStream is = Resources.getResourceAsStream(res); // src에있는 config.xml파일에 inputstream 연결 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); // is에 있는 설정을 연결시켜서 그대로 읽어들여 정보를 담은 // SqlSessionFactory 생성. SqlSession session = factory.openSession(); // 계정이 연결된 sqlSession 생성 | cs |
모든 구문에 공통영역. () 안에 사용할 xml파일을 변수로 설정하고 넣고나서 시작한다.
* select문을 실행하기위한 java class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | String res = "config.xml"; try { InputStream is = Resources.getResourceAsStream(res); //src에있는 config.xml파일에 inputstream 연결 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); //is에 있는 설정을 연결시켜서 그대로 읽어들여 정보를 담은 SqlSessionFactory 생성. SqlSession session = factory.openSession(); // 계정이 연결된 sqlSession 생성 List<MembersVo> list = session.selectList("member.getlist"); // for (MembersVo vo : list) { System.out.println(vo); } session.close(); } catch (IOException ie) { System.out.println(ie.getMessage()); } } | cs |
* insert문을 실행하기 위한 java class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | String res = "config.xml"; String id = "자바"; String pwd = "3333"; String email = "two@naver.com"; String phone = "010-4444-5555"; Date regdate = new Date(); try { InputStream is = Resources.getResourceAsStream(res); // src에있는 config.xml파일에 inputstream 연결 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); // is에 있는 설정을 연결시켜서 그대로 읽어들여 정보를 담은 // SqlSessionFactory 생성. SqlSession session = factory.openSession(); // 계정이 연결된 sqlSession 생성 MembersVo vo = new MembersVo(id, pwd, email, phone, regdate); int n = session.insert("member.addMem", vo); if (n > 0) { session.commit(); System.out.println("insert 성공!"); } else { session.rollback(); System.out.println("insert 실패!"); } session.close(); } catch (IOException ie) { System.out.println(ie.getMessage()); } } | cs |
- SQLSession 메서드
selectList() :: ex)select * from table ==> 여러개의 레코드를 가져올때
selectOne() :: ex) where절에 primary키로 레코드가 한줄 나올때 사용
insert()
update()
delete()
'JAVA > MyBatis' 카테고리의 다른 글
mybatis - 동적SQL(if / choose / where / set / foreach) (0) | 2018.09.04 |
---|---|
mybatis - <select>의 속성 / keyProperty / sql문에 null허용법 (2) | 2018.09.04 |