Mybatis 에서 흔히 볼 수 있 는 주해 에는 어떤 것들 이 있 습 니까(총괄)
그럼
Mybatis
에는 또 어떤 주해 가 있 습 니까?Mybatis
중의 주 해 는 기본적으로org.apache.ibatis.annotations
목록 아래 에 있다.@MapperScan
이 주 해 는 논란 이 있 지만 부인 할 수 없 는 것 은 이 주해 가 확실히
Mybatis
의 주해 이 고 스프링 을 통합 하기 위해 쓴 주해 라 는 것 이다.이 주 해 는 주로 가방 디 렉 터 리 에 있 는 Mapper 를 스 캔 하여 Mapper 인터페이스 류 를 Spring 에 맡 겨 관리 하 는 것 이다.
org.mybatis.spring.annotation.MapperScan
사용 방식
@SpringBootApplication
@MapperScan("com.tian.mybatis.mapper")
public class Application {
}
사실 이름 에서 알 수 있 듯 이 스 캔 용 Mapper 입 니 다.스 캔 패키지 경 로 는 하나 이상 일 수도 있 고 경로 에서*를 어댑터 로 사용 하여 패키지 이름 을 일치 시 킬 수도 있 습 니 다.
@SpringBootApplication
@MapperScan("com.tian.*.mapper")
public class Application {
}
@SpringBootApplication
@MapperScan({"com.tian.mybatis.mapper","com.tian.mybatis.mapper1"})
public class Application {
}
유연성 이 상당히 높 아서 실제 프로젝트 에서 스 캔 되 고 싶 은 가방 경 로 를 지정 할 수 있 습 니 다.@Mapper
이 주해 의 목적 은 mapper 맵 파일
UserMapper.xml
을 쓰 지 않 기 위해 서 입 니 다.xml 의 번 거 로 움 을 크게 간소화 할 수 있 습 니 다.이 주 해 는 Mybatis 프레임 워 크 에서 정 의 된 데이터 계층 인 터 페 이 스 를 설명 하 는 주해 입 니 다.주 해 는 흔히 설명 적 인 역할 을 합 니 다.Spring 프레임 워 크 에 이 인터페이스의 실현 류 는 Mybatis 가 만 들 고 실제 대상 을 spring 용기 에 저장 하 는 것 을 알려 줍 니 다.사용 방식
@Mapper
public interface UserMapper {
User selectById(Integer id);
}
@Insert기록 을 삽입 할 때 메 인 키 는 어떻게 생 성 합 니까?이에 대해 기본적으로 세 가지 방안 이 있 는데 그것 이 바로 수 동 지정(응용 층),자체 증가 키(데이터 층 단일 표),선택 키(데이터 층 다 중 표)이다.
xml 파일 의
<insert>
태그 에 대응 합 니 다.응용 층 에서 홈 키 를 수 동 으로 지정 합 니 다.
수 동 으로 지정 한 방식 은 메 인 키 를 구별 하지 않 습 니 다.삽입 하기 전에 응용 층 에서 대상 을 만 들 때 메 인 키 에 값 을 주 고 삽입 할 때 일반 필드 와 다 를 바 없습니다.
/**
* ,
*/
@Insert("INSERT INTO t_user (id, username, passwd) VALUES (#{id}, #{username}, #{passwd})")
int addUserAssignKey(User user);
위의 이 예 에서 my batis 는 도대체 어떤 필드 가 메 인 키 인지 모 릅 니 다.id 는 메 인 키 필드 이지 만 구별 되 지 않 습 니 다."주의"
\#{username}이 쓰 기 는 User 를 현재 컨 텍스트 로 하 는 것 입 니 다.사용자 의 속성 에 접근 할 때 속성 이름 을 직접 쓰 면 됩 니 다.
표 셀 프 증가 키
셀 프 메 인 키 는 XML 설정 의 메 인 키 에 대응 합 니 다.간단 한 예:
/**
* ,
*/
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("INSERT INTO t_user (username, passwd) VALUES (#{username}, #{passwd})")
int addUserGeneratedKey(User user);
Option 을 사용 하여 XML 에 설 정 된 select 탭 의 속성 에 대응 합 니 다.userGeneratordKeys 는 홈 키 를 추가 하고 key Property 는 홈 키 필드 의 필드 이름 을 지정 하 는 데 사 용 됩 니 다.홈 키 는 데이터베이스 밑 에 있 는 자체 증가 기능 을 사용 합 니 다.홈 키 선택
메 인 키 를 선택 하여 데이터 층 에서 값 을 만 들 고 이 값 을 메 인 키 의 값 으로 합 니 다.
/**
* ,
*/
@Insert("INSERT INTO t_user (username, passwd) VALUES (#{username}, #{passwd})")
@SelectKey(statement = "SELECT UNIX_TIMESTAMP(NOW())", keyColumn = "id", keyProperty = "id", resultType = Long.class, before = true)
int addUserSelectKey(User user);
@Delete삭제 할 때 문장 조건 을@Delete 주해 의 value 에 쓰 면 됩 니 다.int 형식 으로 돌아 가 는 것 은 삭 제 된 기록 수 입 니 다.xml 파일 의
<delete>
태그 에 대응 합 니 다.
/**
*
*/
@Delete("DELETE FROM t_user WHERE id=#{id}")
int delete(Long id);
@Update수정 할 때 삭제 와 마찬가지 로
SQL
문 구 를@Update 의 value 에 쓰 면 됩 니 다.int 형식 으로 수 정 된 기록 줄 수 를 되 돌려 줍 니 다.xml 파일 의
<update>
태그 에 대응 합 니 다.
/**
*
*/
@Update("UPDATE t_user SET username=#{username}, passwd=#{passwd} WHERE id=#{id}")
int update(User user);
@Select검색 할 때 약간 복잡 합 니 다.검색 은 찾 아 낸 필드 를 대상 에 설정 하 는 방법 과 관련 되 기 때문에 xml 파일 의
<select>
태그 에 대응 합 니 다.보통 세 가지 방법 이 있다.
SQL 구문 에 수 동 으로 별명 을 지정 하여 일치 합 니 다.
SQL 문 구 를 쓸 때 수 동 으로 각 필드 에 별명 을 지정 하여 대상 의 속성 과 일치 하도록 합 니 다.표 필드 이름과 대상 속성 이름 의 차이 가 매우 불규칙 하고 표 필드 가 많 지 않 은 경우 에 적 용 됩 니 다.
/**
* ID ,
*/
@Select("SELECT id, username, passwd, birth_day AS birthDay FROM t_user WHERE id=#{id}")
User loadByIdHandAlias(Long id);
my batis 의 자동 밑줄 낙타 봉 전환 사용 하기my batis 는 mapUnderscore ToCamelCase 라 는 옵션 이 있 습 니 다.표 의 필드 이름 이 대상 의 속성 이름과 같 을 때 밑줄 과 낙타 봉 쓰기 의 차이 만 있 을 때 적 용 됩 니 다.
mapUnderscore ToCamelCase 를 설정 한 후 my batis 는 ResultSet 에서 찾 아 낸 데 이 터 를 대상 으로 설정 할 때 밑줄 을 낙타 봉 으로 변환 한 다음 앞 에 set 를 연결 하여 속성 을 설정 하려 고 합 니 다.
오픈 변환:
그리고 조회
/**
* ID ,
*/
@Select("SELECT * FROM t_user WHERE id=#{id}")
User loadByIdAutoAlias(Long id);
인쇄 결과 보기,birthday 속성 이 대상 에 채 워 졌 습 니 다:ResultMap 사용
표 의 필드 이름과 대상 의 속성 명 에 큰 공통점 이 없고 표 의 필드 가 많은 경우 ResultMap 을 사용 하여 적합 하 게 해 야 합 니 다.
/**
* ResultMap
*/
@Results(id = "userMap", value = {
//
@Result(id=true, column = "id", property = "id"),
@Result(column = "username", property = "username"),
@Result(column = "passwd", property = "passwd"),
@Result(column = "birth_day", property = "birthDay")
})
@Select("SELECT * FROM t_user WHERE id=#{id}")
User loadByIdResultMap(Long id);
@Results 는 XML 의 ResultMap 에 대응 하 는 동시에 id 를 지정 할 수 있 습 니 다.다른 곳 에 서 는 이 id 를 사용 하여 참조 할 수 있 습 니 다.예 를 들 어 위의 Results 를 참조 하 십시오.
/**
* Result
*/
@ResultMap("userMap")
@Select("SELECT * FROM t_user WHERE id=#{id}")
User loadByIdResultMapReference(Long id);
@ResultMap 을 사용 하여 이미 존재 하 는 ResultMap 을 참조 합 니 다.이 ResultMap 은 자바 에서@Results 주 해 를 사용 하여 정의 할 수도 있 고 XML 에서 resultMap 태그 로 정의 할 수도 있 습 니 다.첨삭 하고 수정 하 며 주해 총 결 을 조사 하 다.
기타 주해
@Results:결과 맵 의 목록 은 속성 이나 필드 에 어떻게 비 치 는 지 에 대한 자세 한 정 보 를 포함 합 니 다.속성:value,id.value 속성 은 Result 주해 의 배열 입 니 다.xml 에 있 는
<resultMap>
태그 에 대응 합 니 다.@Result:열 과 속성 또는 필드 사이 의 단독 결과 맵 입 니 다.속성:id,column,property,javaType,jdbc Type,type Handler,one,many.id 속성 은 불 값 으로 비교(XML 맵 과 유사)에 사용 되 어야 할 속성 을 표시 합 니 다.one 속성 은 단독 적 인 관계 로
<association>
와 비슷 하 며,many 속성 은 집합 에 있어 서<collection>
와 비슷 하 다.이름 이 충돌 하지 않도록 이름 을 짓 는 다.<resultMap>
와 유사 한 하위 태그<result>``<id>
.@One:복잡 한 유형의 단독 속성 값 맵.속성:select,이미 매 핑 된 구문(즉 매 핑 기 방법)의 완전 한정 명 입 니 다.적당 한 유형의 인 스 턴 스 를 불 러 올 수 있 습 니 다.메모:주석 API 에 연합 맵 은 지원 되 지 않 습 니 다.자바 주해 의 제한 때문에 반복 적 으로 인용 할 수 없습니다.
<association>
태그 와 유사 합 니 다.@many:@One 과 유사 하고 한 쌍 이 많은 관계,유사
<collection>
@Param:매개 변수 태그 입 니 다.Mapper 의 방법 서명 에 표 시 된 매개 변 수 는 매개 변수 이름 을 지정 한 다음 에 주석 이나 xml 에 있 는 SQL 에서 사용자 정의 매개 변수 이름 을 사용 할 수 있 습 니 다.@SelectKey:최신 삽입 id 를 가 져 옵 니 다.
@Cache Namespace:주어진 네 임 스페이스(예 를 들 어 클래스)에 캐 시 를 설정 합 니 다.xml 에 대응 하 는
<cache>
.@Cache NamespaceRef:다른 네 임 스페이스 캐 시 를 참조 하여 사용 합 니 다.속성:value,이름 공간의 문자열 값(즉 클래스 의 완전 한정 이름)이 어야 합 니 다.xml 에 있 는
<cacheRef>
태그 에 대응 합 니 다.@ConstructorArgs:한 조 의 결 과 를 수집 하여 약탈 대상 에 게 전달 하 는 구조 방법 입 니 다.속성:value,형식 매개 변수의 배열 입 니 다.
@Arg:단독 구조 방법 매개 변 수 는 ConstructorArgs 집합의 일부분 입 니 다.속성:id,column,javaType,type:Handler.id 속성 은 불 값 으로 비교 에 사용 되 는 속성 을 표시 합 니 다.XML 요소 와 비슷 합 니 다.xml 에 있 는
<arg>
태그 에 대응 합 니 다.@Case:단독 인 스 턴 스 의 값 과 이에 대응 하 는 맵 입 니 다.속성:value,type,results.Results 속성 은 결과 배열 이기 때문에 이 주 해 는 실제 ResultMap 과 비슷 하 며 아래 Results 주해 에서 지정 합 니 다.xml 에 있 는 태그
<case>
에 대응 합 니 다.Mybatis 는 대상 과 탭 에 대한 주석 을 자주 사용 합 니 다.
총결산
mybatis 초기 설정 정 보 는 XML 을 기반 으로 하고 매 핑 문장(SQL)도 XML 에 정 의 됩 니 다.MyBatis 3 에 도착 하면 주 해 를 기반 으로 한 새로운 설정 을 제공 합 니 다.my batis 가 제공 하 는 주해 가 많 습 니 다.필 자 는 분 류 를 했 습 니 다.
이 쯤 에서 Mybatis 에서 흔히 볼 수 있 는 주해 에 관 한 어떤 글 이 있 는 지 소개 해 드 리 겠 습 니 다.더 많은 관련 Mybatis 에서 흔히 볼 수 있 는 주해 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SpringMVC와 Mybatis 집합은 호출 저장 프로세스, 사무 제어 실례를 실현한다SSM 프레임워크에서 호출 데이터베이스의 저장 프로세스와 사무 제어에 자주 사용되는데 다음은 증빙서류를 저장하는 예를 들어 소개한다. 1. Oracle에 저장된 프로세스 코드는 다음과 같습니다(주요 논리는 증빙 서류...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.