MyBatis 기본 실현 과정

8701 단어 MyBatis실현 과정
MyBaties 소개
MyBatis 는 맞 춤 형 SQL,저장 프로 세 스,고급 맵 을 지원 하 는 우수한 지구 층 프레임 워 크 입 니 다.
MyBatis 는 거의 모든 JDBC 코드 와 수 동 으로 파 라 메 터 를 설정 하고 결과 집합 을 가 져 오 는 것 을 피 했 습 니 다.
MyBatis 는 간단 한 XML 또는 주 해 를 사용 하여 설정 과 원본 맵 에 사용 할 수 있 으 며 인터페이스 와JavaPOJO(Plain Old Java Object,일반 자바 대상)을 데이터베이스 에 기록 할 수 있 습 니 다.
MyBatis 역사
원래 Apache 의 오픈 소스 프로젝트 였 던 iBatis 는 2010 년 6 월 Apache Software Foundation 에서 Google Code 로 이전 되 었 으 며,개발 팀 이 Google Code 로 이전 함 에 따라 iBatis 3.x 는 MyBatis 로 정식 명칭 을 바 꾸 었 으 며,코드 는 2013 년 11 월 에 바 뀌 었 다.
Github다운로드 주소로 이전 합 니 다.


iBatis 라 는 단 어 는'인터넷'과'abatis'의 조합 에서 유래 한 것 으로 자바 기반 의 영구적 인 프레임 워 크 입 니 다.iBatis 가 제공 하 는 지구 층 프레임 워 크 는 SQL Maps 와 Data Access Objects(DAO)를 포함한다.
마 이 바 티 스 를 왜 써 요?
MyBatis 는 반자동 화 된 지구 화 층 프레임 워 크 입 니 다.
JDBC
JDBC->Dbutils(QueryRunner) -> JdbcTemplate:도구
기능 이 간단 하 다.sql 문 구 는 자바 코드 에 작 성 됩 니 다.하 드 코딩 고결 합 방식

Hibernate:전자 동 전체 맵 ORMObject Relation Mapping프레임 워 크;sql,HQL 제거 목적

희망:sql 문 구 는 개발 자 에 게 맡 기 고 sql 이 유연성 을 잃 지 않 기 를 바 랍 니 다.
  • SQL 은 자바 코드 블록 에 끼 워 져 있 고 결합 도가 높 아 하 드 코딩 내상
  • 유지보수 가 쉽 지 않 고 실제 개발 수요 에서 sql 은 변화 가 있 으 며 자주 수정 되 는 경우 가 많 습 니 다.•Hibernate 와 JPA
  • 길 고 복잡 한 SQL 은 Hibernate 에 게 도 처리 가 쉽 지 않다
  • 내부 에서 자동 으로 생산 되 는 SQL 은 특수 최적화 가 쉽 지 않다.
  • 전체 맵 의 전자 동 프레임 워 크 를 기반 으로 대량의 필드 의 POJO 가 일부 맵 을 할 때 어렵 습 니 다.
  • 데이터베이스 성능 이 떨 어 집 니 다.
  • 개발 자 에 게 핵심 sql 은 스스로 최적화 해 야 한다
  • sql 과 자바 인 코딩 이 분리 되 고 기능 경계 가 뚜렷 하 며 업무 에 전념 하고 데이터 에 전념 합 니 다

  • MyBatis-HelloWorld
    주요 절차
    HelloWorld 단순 판 C 테스트 테이블 만 들 기
  • 대응 하 는 javaBean 만 들 기
  • mybatis 프로필 만 들 기,sql 맵 파일
  • 테스트
  • 우선 데이터베이스 에 Employee 표를 만 들 고 테스트 할 수 있 도록 데 이 터 를 마음대로 삽입 합 니 다.
    
    CREATE TABLE `tbl_employee` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `last_name` varchar(255) DEFAULT NULL,
      `gender` char(1) DEFAULT NULL,
      `email` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

    아이디어 가이드

    대응 하 는 javaBean 대상 을 만 들 고 toString 방법 을 다시 써 서 뒤에서 출력 하기 편리 합 니 다.
    
    public class Employee {
        private int id;
        private String last_name;
        private String gender;
        private String email;
        public Employee() {
        }
        public Employee(int id, String laseName, String gender, String email) {
            this.id = id;
            this.last_name = laseName;
            this.gender = gender;
            this.email = email;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getLaseName() {
            return last_name;
        }
        public void setLaseName(String laseName) {
            this.last_name = laseName;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this.gender = gender;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        @Override
        public String toString() {
            return "Employee{" +
                    "id=" + id +
                    ", laseName='" + last_name + '\'' +
                    ", gender='" + gender + '\'' +
                    ", email='" + email + '\'' +
                    '}';
        }
    }
    Mapper 인터페이스 만 들 기
    
    import school.xauat.mybatis.bean.Employee;
    public interface EmployeeMapper {
        public Employee getEmpById(Integer id);
    }
    MyBatis 전역 프로필 만 들 기
    C MyBatis 의 전역 프로필 에는 MyBatis 의 행동 에 영향 을 주 는 설정(settings)과 속성(properties)정보,예 를 들 어 데이터베이스 연결 풀 정보 등 이 포함 되 어 있 습 니 다.마 이 바 티 스 의 작업 을 지도하 고 있다.우 리 는 공식 파일 의 설정 예 시 를 참조 할 수 있다.
    
    <?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>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                    <property name="username" value="root"/>
                    <property name="password" value="***"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="EmployeeMapper.xml"/>
        </mappers>
    </configuration>
    SQL 맵 파일 만 들 기
    맵 파일 의 역할 은 Dao 인터페이스의 실현 클래스 가 어떻게 작 동 하 는 지 정의 하 는 것 과 같다.이것 도 우리 가 MyBatis 를 사용 할 때 가장 많이 작 성 된 파일 입 니 다.
    
    <?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="school.xauat.mybatis.dao.EmployeeMapper">
        <!--
        namespace:    ;         
        id:    
        resultType:     
        #{id}:           id 
        -->
        <select id="getEmpById" resultType="school.xauat.mybatis.bean.Employee">
            select * from tbl_employee where id = #{id}
        </select>
    </mapper>
    테스트
    1.전역 설정 파일 에 따라 SqlSessionFactory Builder 를 이용 하여 SqlSessionFactory 대상 만 들 기
    
    /**
         *   SqlSessionFactory  
         * @return
         * @throws IOException
         */
        public static SqlSessionFactory getSqlSessionFactory() throws IOException{
            String resource = "mybatis-config.xml";
            InputStream  inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            return sqlSessionFactory;
        }
    2.SqlSession Factory 를 사용 하여 SqlSession 대상,SqlSession 대상 대표 와 데이터 베 이 스 를 가 져 오 는 세 션
    
    public static void test01() throws IOException {
            //1、  SqlSessionFactory  
            SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
            //2、  SqlSession  
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //3、          
            //              ,           
            EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
            Employee employee = mapper.getEmpById(1);
            System.out.println(mapper.getClass());
            System.out.println(employee);
            sqlSession.close();
        }
    테스트 01 호출

    주의:SqlSession
  • SqlSession 의 인 스 턴 스 는 스 레 드 가 안전 하지 않 기 때문에 공유 할 수 없습니다.
  • SqlSession 은 매번 사용 이 끝 난 후에 정확하게 닫 아야 합 니 다.이 닫 기 동작 은 필수 입 니 다
  • SqlSession 은 방법의 id 를 직접 호출 하여 데이터 베 이 스 를 조작 할 수 있 습 니 다.그러나 저 희 는 일반적으로 SqlSession 을 사용 하여 Dao 인터페이스의 프 록 시 클래스 를 얻 고 프 록 시 대상 을 수행 하 는 방법 을 추천 합 니 다.유형 검사 작업 을 더욱 안전하게 할 수 있 습 니 다
  • 총결산
    이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 기 를 바 랍 니 다!

    좋은 웹페이지 즐겨찾기