-
day56 - MyBatis(Mybatis, Mybatis 실행 절차)KIC/MyBatis 2021. 9. 3. 02:19반응형
[MyBatis]
- 자바에서 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크이다.
- java beans 객체를 preparedStatement parameters와 ResultMaps로 쉽게 매핑을 할수 있도록 도와준다.
- 이를 통해 database에 접근하기 위한 자바 코드의 양을 줄일 수 있다.
[MyBatis 실행 절차]
1. 객체를 파라미터로 전달
-> javaBeans, Map or primitive Wrapper
2. 매핑되는 sql 문장을 수행
-> sql Maps 프레임워크는 PreparedStatement 인스턴스 생성
-> 객체로부터 제공되는 값들을 파라미터로 세팅
3. SQL 문장을 수행하고 ResultSet으로부터 결과 객체를 생성.
-> Update의 경우에는 영향을 받은 rows 수가 반환된다.
-> 쿼리의 경우 하나 혹은 여러 객체들이 반환된다.
[mybatis 태그들]
- 여기서 comment는 클래스를 의미한다.
- 기존 jsp 에서는 VALUE(?, ?, ? ... ) 이런식으로 ? 를 써줬지만
- mybatis에서는 comment라는 클래스를 parameterType으로 지정해 주고 comment 클래스 안에 부합하는 변수들이 존재한다면 getUserId와 같은 것들을 끌어와 VALUE() 안에 있는 변수들과 자동적으로 대응시켜준다.
[변수 설정]
- 만약 DB에서 설정한 컬럼 명과 setter getter에서 설정한 프로퍼티 이름이 다를 경우에는 resultMap으로 설정할 수는 있지만 웬만하면 컬럼명과 setter/getter 프로퍼티 명은 같게 해주는 것이 무조건 좋다.
[MemberMapper1.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"> <mapper namespace="member"> <select id="count" resultType="int"> select count(*) from member2 </select> <select id="list" resultType="member"> select * from member2 </select> <select id="selectId" parameterType="string" resultType="member"> select * from member2 where id = #{value} </select> <select id="selectName" parameterType="string" resultType="member"> select * from member2 where name like '%${value}%' </select> <select id="selectNameGender" parameterType="map" resultType="member"> select * from member2 where name like '%${name}%' and gender = #{gender} </select> </mapper>
[main1.java]
package main; 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; public class Main1 { public static void main(String[] args) { initMybatis(); } public static SqlSessionFactory initMybatis() { SqlSessionFactory sqlMap = null; Reader reader = null; try { reader = Resources.getResourceAsReader("mapperXML/mybatis-config.xml"); sqlMap = new SqlSessionFactoryBuilder ().build(reader); System.out.println("ok config"); } catch (IOException e) { // TODO Auto-generated catch block. e.printStackTrace(); } return sqlMap; } }
[main2MemberXML.java]
package main; import java.lang.reflect.Member; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; public class Main2MemberXML { private final static String NS ="member."; public static void main(String[] args) { SqlSessionFactory sqlmap = Main1.initMybatis(); SqlSession session = sqlmap.openSession(); // 하나 받아오기 int x = session.selectOne(NS + "count"); System.out.println("count: "+ x); // 리스트 받아오기 List<Member> li = session.selectList(NS + "count"); for(Member m : li) { System.out.println(m); } Member member = session.selectOne(NS + "selectId"); System.out.println(member); li = session.selectList(NS + "selectName" , "2"); for(Member m : li) { System.out.println(m); } Map map = new HashMap(); map.put("name", "4"); // 이름에 4가 들어간 사람을 추출하기 위함 map.put("gender", "1"); li = session.selectList(NS + "selectNameGender" , map); for(Member m : li) { System.out.println(m); } } }
300x250'KIC > MyBatis' 카테고리의 다른 글
day59 - MyBatis(게시판 mybatis 적용) (0) 2021.09.07 day58 - MyBatis(parameterType, resultType, 게시판에 mybatis 적용) (1) 2021.09.06 day57 - MyBatis(parameterType, resultType) (0) 2021.09.03 java.sql.SQLException: ORA-01017: invalid username/password; logon denied (0) 2021.09.03