빠른 대중화
1. mybatis는 무엇입니까?
MyBatis는 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하는 우수한 지속성 계층 프레임 워크입니다.
MyBatis는 거의 모든 JDBC 코드의 수동 설정과 매개 변수 및 결과 세트의 검색 캡슐화를 제거합니다. MyBatis는 구성 및 원래 매핑, 맵핑 인터페이스 및 Java의 Pojos (일반 Old Java Objects)를 데이터베이스의 레코드로 사용하기 위해 간단한 XML 또는 주석을 사용할 수 있습니다.
Mybatis는 인터페이스 바인딩을 구현하여 사용하기 편리합니다.
개선 된 객체 관계 매핑,보다 효율적입니다
Mybatis는 강력한 OGNL 기반 표현식을 사용하여 다른 요소를 제거합니다.
2. 기능 아키텍처
3. 실행 프로세스
원리에 대한 자세한 설명 :
MyBatis 응용 프로그램은 XML 구성 파일을 기반으로 SQLSESSIONFACTORY를 만듭니다. 구성은 구성에 따라 두 곳에서 제공되며, 하나는 구성 파일이고 다른 하나는 Java 코드의 주석이며 SQLSESSION을 얻습니다. sqlsession에는 SQL을 실행하는 데 필요한 모든 방법이 포함되어 있습니다. SQLSESSION 인스턴스를 통해 매핑 된 SQL 문을 직접 실행하여 데이터 첨가, 삭제, 수정 및 쿼리, 트랜잭션 제출 등을 완료하고 사용 후 SQLSESSION을 닫을 수 있습니다.
이 기사의 핵심 요점을 살펴 보겠습니다. mybatis 간단한 주석
주요 주석 단어 :
@Insert : SQL 삽입, 구문은 XML 삽입 SQL과 정확히 동일합니다.
@Select : Query SQL이고 구문은 XML Select SQL과 정확히 동일합니다.
@update : SQL 업데이트 및 XML 업데이트 SQL의 구문은 정확히 동일합니다.
@Delete : SQL 삭제 및 구문은 XML 삭제 SQL과 정확히 동일합니다.
@Param : Ginseng을 입력하십시오
@Results : 결과 수집
@Result : 결과
1. 도메인 모델 :
공개 클래스 userdo {private long id; private string username; private date gmtcreate; private date gmtmodified; public long getid () {return id;} public void setid (long id) {this.id = id;} public void setusername (return username;} public void setusername (this.username) = username; getgmtcreate () {return gmtcreate;} public void setgmtcreate (날짜 gmtcreate) {this.gmtcreate = gmtcreate;} public date getgmtmodified () {return gmtmodified;} public void setgmtmodified (날짜 gmtmodified) {this. gmtmodified;}}2. 인터페이스 정의 :
public interface userDao {@Insert ( "t_user에 삽입 (gmt_create, gmt_modified, user_name) 값 (now (), now (), #{username}") public int insert (@param ( "username") String Username); @select ( "선택 * 선택 * id = #{id}") public userdo selectByUserId (@param ( "id") long id); @update ( "t_user set gmt_modified = now (), user_name = #{username} public inf us us inst udpatebyid @param ( "id") long id); @delete ( "id = #{id}") public int udpatebyid (@param ( "id") long id); }3. MyBatis XML 구성 :
<!-myBatis 주석-> <bean id = "sqlsessionFactory"> <property name = "dataSource"ref = "mysqlbase" /> <!-여기서는 자신의 데이터 소스를 구성하면됩니다-> < /bean> <bean id = "userdao"> <properte name = "mapperinterface"! 인터페이스-> <속성 이름 = "sqlsessionFactory"ref = "sqlsessionFactory" /> <!-SqlSession Factory-> < /bean>
이런 식으로, 우리는 주석을 사용하여 mybatis의 데모를 완료합니다. 매우 간단하지 않습니까?
MyBatis XML에 익숙한 경우 대부분의 경우 데이터베이스 테이블의 필드 이름을 클래스에 매핑해야합니다. Mybatis 주석은 또한 매핑 함수를 제공하며 구문은 유사합니다.
@select ( "선택 *에서 선택 *에서 선택 * id = #{id}")@results (value = {@result (property = "username", column = "user_name", javatype = string.class, jdbctype = jdbctype.varchar)}) public user deel byid ( "id");물론 위의 것은 SQL이 더 이상 단순 할 수 없다는 것입니다. 이 요구 사항이 있으면 사용자 정보를 업데이트하고 지정된 속성 값을 업데이트하기를 희망합니다. 다시 말해, XML과 같은 SQL을 동적으로 생성합니다. 그런 다음 @update 주석을 간단하고 대략 사용할 수 없습니다. 다행히 강력한 MyBatis는 동적 SQL 어셈블리를 제공합니다.
동적 SQL
해당 관계는 다음과 같습니다
@insert : @insertprovider
@Select : @SelectProvider
@update : @updateprovider
@delete : @deleteprovider
4 개의 제공자 주석 식별자는 동적 SQL을 사용하고 구문 형식을 사용합니다.
@updateprovider (type = userprovider.class, method = "updateql")
동적 SQL을 구성하는 방법
public class userProvider {/*** udpate* @param userdo userdo* @return*/public string updateql (final userdo userdo) {return new sql () {update ( "t_user"); set ( "gmt_modified = now ()"); if (userdo.getusername ()! #{username} ");} 여기서 ("id = #{id}} ");}}. toString ();}}이 기사에 언급 된 지식은 비교적 기본적입니다. 심층적 인 이해가 필요한 경우 공식 웹 사이트 문서를 참조하거나 소스 코드를 읽으십시오.
요약 :
1. XML 및 주석을 선택하는 방법은 무엇입니까? 그것은 사람마다 다릅니다. 누구나 자신의 코딩 습관이 있습니다. XML 및 주석에는 고유 한 장점과 단점이 있습니다. XML의 단점 : 모델 속성이 변경되면 DO에서 DAO로 XML로 변경해야합니다. 그것에 대해 생각하는 것은 고통 일 것입니다 ~ XML에는 장점이 있습니다. SQL 조각 재사용이 편리하고 구문이 접근 할 수 있습니다. 주석과 달리 동적 진술을 만들고 클래스를 만들어야합니다. 또한, SQL 세그먼트가 여러 곳에서 참조되면 코드가 중복됩니다. 현재 XML을 사용하여 함께 추출하고 사용해야합니다. 나는 mybatis 주석에 대해 불평했다. 그 주석이 쓸모가 없을까요? 아니요, MyBatis는 모델 속성이 종종 변경되는 시나리오에 적합합니다. 반사 및 동적으로 구성된 SQL (순수한 말도 안되는 개인 아이디어, 실현되어야하며 다른 날 이루어질 것입니다). Mybatis 주석의 장점은 XML의 단점을 잘 보충한다고 말할 수 있습니다. 두 사람은 서로를 보완합니다 ~
위는 편집자가 소개 한 Mybatis 개발 주석을 빠르게 시작하는 것입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!