가을 준비.-백 스테이지 프레임.-미 바 티 스.

11493 단어 가을 모집 준비
Mybatis
    Mybatis 는 일반 SQL 조회,저장 과정 과 고급 맵 을 지원 하 는 지구 층 프레임 워 크 입 니 다.
    Mybatis 는 거의 모든 JDBC 코드 와 매개 변수의 수 동 설정 과 결과 집합 에 대한 검색 패 키 지 를 제거 합 니 다.
    Mybatis 는 간단 한 XML 이나 주 해 를 사용 하여 설정 과 원본 맵 에 사용 할 수 있 으 며 인터페이스 와 자바 의 pojo 를 데이터베이스 기록 으로 매 핑 할 수 있 습 니 다.
 
  •     간단 한 소개
  •     1.mybatis-config.xml
        이 xml 파일 에 데이터베이스 드라이버(driver),경로(url),계 정 비밀번호 등 데이터 베 이 스 를 연결 하 는 정 보 를 설정 합 니 다.이 파일 은 일반적으로 프로젝트 의 가장 바깥쪽 에 있다.
        이후 이 xml 파일 을 resource 로 한 걸음 한 걸음 SqlSession 을 예화 합 니 다.
        별명 탭 에서 이 가방 의 pojo 형식 을 정의 하면 resultType 을 쓸 때 전체 이름 을 쓰 지 않 고 클래스 이름 을 직접 쓸 수 있 습 니 다.
        다음은 mapper.xml 를 등록 하 는 데 사 용 됩 니 다.
        2.다음은 pojo 가방 이 있어 야 합 니 다.(model 층 이 라 고도 할 수 있 습 니 다.)안에 포 조 류 도 있어 요.
        pojo 대상 은 주로 자신 이 읽 고 싶 은 내용 으로 대상 으로 밀봉 하고 읽 을 때 데이터베이스 에서 읽 은 내용 을 이러한 속성 변수 에 반영 합 니 다.pojo 클래스 의 속성 을 쓰 고 get()set()방법 을 자동 으로 생 성 하 며 상황 에 따라 toString()equal()hashCode()방법 을 다시 씁 니 다.
        3.그리고 dao 층 이 필요 합 니 다.보통 pojo 는 mapper 에 대응 합 니 다.dao 층 에 mapper.xml 과 mapper 인 터 페 이 스 를 씁 니 다.
        4.그 다음 에 데 이 터 를 방문 해 야 하 는 곳 에서 config.xml 를 통 해 SqlSession 을 구축 한 다음 에 mapper 인터페이스의 인 스 턴 스 를 얻 은 다음 에 정 의 된 방법 으로 SQL 문 구 를 수행 할 수 있 습 니 다.
     
     
  •    상용 대상:
  •     1.SqlSessionFactory
        SqlSession Factory 의 인 스 턴 스 는 SqlSession Factory Builder 를 통 해 얻 을 수 있 으 며,SqlSession Factory Builder 는 xml 프로필 이나 미리 맞 춤 형 Configuration 의 인 스 턴 스 를 통 해 SqlSession Factory 의 인 스 턴 스 를 구축 할 수 있 습 니 다.
        xml 파일 에서 SqlSession Factory 를 구축 하 는 인 스 턴 스 는 보통 다음 과 같 습 니 다.
    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession Factory 는 SqlSession 인 스 턴 스 를 얻 는 데 사 용 됩 니 다.
        2.SqlSession
        SqlSession 은 데이터베이스 에 SQL 명령 을 실행 하 는 데 필요 한 모든 방법 을 포함 하고 있 습 니 다.SqlSession 인 스 턴 스 를 통 해 매 핑 된 SQL 문 구 를 실행 할 수도 있 고 SqlSession 을 통 해 mapper 인터페이스의 인 스 턴 스 를 얻 은 다음 이 인 스 턴 스 를 통 해 SQL 방법 을 실행 할 수도 있 습 니 다.
        가장 많이 사용 되 는 형식:
    SqlSession session = sqlSessionFactory.openSession();
    //    
    session.selectOne("   .   ",  )
    //   mapper
    session.getMapper(   .class)

        SqlSession 대상 을 사용 하고 close()방법 으로 닫 으 려 면
     
     
  •     xml 로 간단 한 CURD 쓰기
  •     이 mapper 의 모든 제한 이름 을 namespace 로 쓰 는 것 이 좋 습 니 다.mapper.xml 와 mapper 인 터 페 이 스 는 같은 것 이 좋 습 니 다.
        아래,즉 라벨,
        1.단일 pojo 를 찾 아 직접 인삼 을 전달 하고@param 으로 설명 합 니 다.
           :
    product_(int id,varchar(20) name)
    pojo  :
    Product(int id,String name)
         :
    //ProductMapper.xml<1>
    
    //ProductMapper.java
    public Product selectById(@param("id") int id);
    //test.java
    Product p = mapper.selectById(10);
    
    //    #{0}、#{1},    @param  ,#{0}       ,    。

     
        2.단일 pojo 를 찾 아 parameter Type 으로 대상 을 전달 합 니 다.
       、pojo  
         :
    //ProductMapper.xml<1>
    
    //ProductMapper.java
    public Product selectById(Product product);
    //test.java
    Product p1 = new Product(); p1.setId(10); 
    Product p2 = mapper.selectById(p1);
    
    //    Product  ,     id。

       
        3.일대일 조회
        1 대 1 유사:한 반 은 한 선생님 만 책임 진다.한 선생님 은 그의 반 에 만 대응한다.
        이러한 데이터 가 데이터 시트 에 저 장 된 형식 은 다음 과 같 아야 합 니 다.
    classes_(int cid,varchar(20) name,int tid)
    teacher_(int tid,varchar(20) name,int cid)

        pojo 대상 은 다음 과 같이 정의 해 야 합 니 다.
    class Classes
    {
        int cid;
        String name;
        Teacher teacher;
    }
    class Teacher
    {
        int tid;
        String name;
        Classes classes;
    }//  set/get

        mapper.xml 쓰기 sql:
    
        
        
    
        
            
            
        
    
    
    

        실제로 1 대 1 과 다 대 1 은 다른 종 류 를 포함 하 는 대상 으로 이해 할 수 있다.그리고 resultMap 에서 필드 이름과 속성 이름 을 매 핑 합 니 다.검색 어 에 서 는 필요 한 데 이 터 를 모두 찾 아야 한다.
        type 은 대응 하 는 pojo 류 의 전체 제한 이름 입 니 다.id 는 이 resultMap 의 값 을 유일 하 게 표시 합 니 다.이후 sql 반환 매개 변수 resultMap 에서 설정 합 니 다.
        데이터 시트 의 메 인 키 에 대응 하 는 탭 과 차이 가 많 지 않 습 니 다.관건 은 다음 속성 입 니 다.column 은 조회 필드 값 에 대응 하고 property 는 pojo 의 속성 값 에 대응 합 니 다.
        연결 에 사용 되 며,자바 타 입 은 이러한 종류의 전체 제한 이름 을 표시 합 니 다.property 는 pojo 의 해당 속성 값 입 니 다.
     
        4.한 쌍 이 많 고,한 쌍 이 많다.
        모델 은 한 반 에 여러 명의 학생 이 있 고 여러 명의 학생 이 한 반 에 대응 하 는 것 으로 이해 할 수 있다.
        데이터 시트 에 저 장 된 형식 은 다음 과 같 아야 합 니 다.
    classes_(int id,varchar(20) name);
    student_(int id,varchar(20) name,int cid);

        pojo 대상 은 다음 과 같이 정의 해 야 합 니 다.
    class Classes
    {
        int id;
        String name;
        List student;
    }
    class Student
    {
        int id;
        String name;
        Classes classes;
    }

        ClassesMapper.xml:
     
        
        
    
        
            
            
        
     
    
     

        Student Mapper.xml 의 쓰기 방법 은 1 대 1 의 쓰기 로 1 대 1 과 유사 합 니 다.
     
        5.많 으 면 많다.
        모델:한 학생 이 여러 그룹 에 가입 할 수 있 고 한 그룹 에 여러 학생 이 있 을 수 있 습 니 다.
        데이터 저장 형식:
    Student_(int id,varchar(20) name);
    Group_(int id,varchar(20) name);
    Join(int sid,int gid,int price);

         pojo 정의:
    class Student
    {
        int id;
        String name;
        List join;
    }
    class Group
    {
        int id;
        String name;
        List join;
    }
    class Join
    {
        int sid;
        int gid;
        int price;
    }

        Student Mapper.xml 는 GroupMapper.xml 과 유사 합 니 다.
    
        
        
    
        
            
                
                
            
        
     
    
    
    
    //  List 
    for(Group g:gl)
    {
        int gid = g.getId();    String gname=g.getName();
        List jl = g.getJoin();
        for(Join j : jl)
        {
            int price = j.getPrice();
            List sl = j.getStudent();
            for(Student s : sl)
            {
                int sid = s.getId();     String sname = s.getName();
            }
        }
    }

     
     
  •     동적 SQL
  •     1.
        일반적으로 조건 을 늘 리 는 데 쓸 수 있다.예 를 들 어 특정한 매개 변수 가 있 을 때 이 매개 변수 에 따라 특정한 조건 으로 선별 합 니 다.
          #{id}    
            where id > #{id}
        

     
        2.
        여러 개 를 쓰 려 면 모든 문 구 를 where 라 고 쓰 고 중첩 할 수 없 으 며 오류 가 발생 할 수 있 습 니 다.그리고 하 나 는 where 를 쓰 고 다른 하 나 는 and 추가 조건 을 쓰 면 and 만 만족 시 킬 때 문법 오류 가 발생 할 수 있 습 니 다.예:
        
            where name like concat('%',#{name},'%')
        
        
            and price > #{price}
        

        그래서 이 경우
        
            
                and name like concat('%',#{name},'%')
            
        

        만약 두 가지 조건 이 모두 만족 하지 않 는 다 면,자동 으로 없 앨 것 이다.
     
        3.이와 유사 하 게 update 에서 도 다 중 필드 문제 가 발생 할 수 있 습 니 다.이런 경 우 는 사용 할 수 있다.
        
         	name=#{name},
         	price=#{price}
        

     
        4.,if-else 효과 달성
        
    	    
    		  
    		    and name like concat('%',#{name},'%')
    		  			  
    		  
    		    and price > #{price}
    		  			  		
    	  	  
    	  	  	and id >1
    	  	  
    	    
        

        다 조건 이 달성 되면 가장 먼저 달성 한 조건 을 선택해 다음 문 구 를 집행 한다.
     
        5.
        라벨 은 보통 in 과 같은 문구 에 사 용 됩 니 다.
        문자열 연결 을 한 번 더 하 는 것 같 아서 나중에 사용 하기 편 합 니 다....와 같다
     
     
  •     Mybatis 주해
  •     1.간단 한 sql 문 구 는 주석 형식 으로 직접 쓸 수 있 습 니 다.예:
    @Select("select * from student_") 
    public List listStudent();
    
    @Update("update student on name = #{name} where id = #{id}")
    public int updateStudent(@Param("name") String name,@Param("id") int id);
    
    @Insert("insert into student_ (name) values (#{name}) ")
    public int addStudent(Student student);
    
    @Delete("delete from student_ where id = #{0}")
    public void deleteStudent(int id);

     
        2.@Results 와@Result 는 xml 에 resultMap 을 쓰 는 것 과 유사 하 며,필드 와 속성 이름 의 맵 관 계 를 확인 하 는 역할 을 합 니 다.
        한 쌍 이 많 고 한 쌍 이 많은 경우@Many 와@One 주 해 를 사용 하여 다른 표 와 관련 하여 조회 할 수 있 습 니 다.column 으로 인삼 을 전달 할 수 있 습 니 다.
     
        3.동적 SQL 의 주석 용법.
        SqlProvider 클래스 를 새로 추가 하고 방법 을 쓴 다음@InsertProvider 같은 탭 을 사용 해 야 합 니 다.
     
     
  •     Tips:

  •     1.코드 블록,코드 재 활용
        2.limit 페이지 나 누 기
     
     
  •     Ques:

  •     1.\#{]와${}의 차 이 는 무엇 입 니까?
        #{}사전 컴 파일 처리 입 니 다.${}은 문자열 교체 입 니 다.
        Mybatis 는\#{}을 처리 할 때 sql 의\#{}을?로 바 꿉 니 다.Prepared Statement 의 set 방법 을 호출 하여 값 을 부여 합 니 다.
        Mybatis 는${}을 처리 할 때${}을 변수 값 으로 바 꿉 니 다.
        #{}sql 주입 방지,안전성 높 음.
     
        2.실체 클래스 의 속성 명 과 표 의 필드 이름 이 다 를 때:
        <1>조 회 된 sql 에서 필드 이름 의 별명 을 정의 하여 필드 이름 의 별명 을 실체 클래스 의 속성 이름과 같 게 합 니 다.
        <2>필드 이름과 실체 클래스 속성 이름 의 일일이 대응 하 는 관 계 를 매 핑 합 니 다.(column 과 property)
     
        3.보통 xml 맵 파일 은 Dao 인터페이스 와 대응 합 니 다.Dao 작업 원리:
     
        Dao 인 터 페 이 스 는 사람들 이 흔히 말 하 는 Mapper 인터페이스 입 니 다.인터페이스의 전체 제한 명 은 바로 파일 에 있 는 namespace 의 값,인터페이스의 방법 명 입 니 다.바로 파일 에 있 는 Mapped Statement 의 id 값 을 매 핑 하 는 것 입 니 다.인터페이스 방법 에 있 는 매개 변 수 는 sql 에 전달 하 는 매개 변수 입 니 다.
       Mapper 인 터 페 이 스 는 구현 클래스 가 없습니다.인터페이스 방법 을 호출 할 때 인터페이스 전체 제한 명+방법 명 연결 문자열 을 key 값 으로 하여 Mapped Statement 을 유일 하 게 찾 을 수 있 습 니 다.
        Mybatis 에 서 는 각각,,,태그 가 하나의 Mapped Statement 대상 으로 분 석 됩 니 다.
     
  •     Point++

  •     1.페이지 별 rowBounds
        2.캐 시
        3.로그

    좋은 웹페이지 즐겨찾기