가을 준비.-백 스테이지 프레임.-미 바 티 스.
11493 단어 가을 모집 준비
Mybatis 는 일반 SQL 조회,저장 과정 과 고급 맵 을 지원 하 는 지구 층 프레임 워 크 입 니 다.
Mybatis 는 거의 모든 JDBC 코드 와 매개 변수의 수 동 설정 과 결과 집합 에 대한 검색 패 키 지 를 제거 합 니 다.
Mybatis 는 간단 한 XML 이나 주 해 를 사용 하여 설정 과 원본 맵 에 사용 할 수 있 으 며 인터페이스 와 자바 의 pojo 를 데이터베이스 기록 으로 매 핑 할 수 있 습 니 다.
이 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 문 구 를 수행 할 수 있 습 니 다.
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()방법 으로 닫 으 려 면
아래,즉 라벨,
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();
}
}
}
일반적으로 조건 을 늘 리 는 데 쓸 수 있다.예 를 들 어 특정한 매개 변수 가 있 을 때 이 매개 변수 에 따라 특정한 조건 으로 선별 합 니 다.
#{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 과 같은 문구 에 사 용 됩 니 다.
문자열 연결 을 한 번 더 하 는 것 같 아서 나중에 사용 하기 편 합 니 다....와 같다
@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 같은 탭 을 사용 해 야 합 니 다.
1.코드 블록,코드 재 활용
2.limit 페이지 나 누 기
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 대상 으로 분 석 됩 니 다.
1.페이지 별 rowBounds
2.캐 시
3.로그