Mybatis는 XML 설명자 또는 주석을 통해 객체를 저장 프로 시저 또는 SQL 문과 연관시키는 Java Persistence 프레임 워크입니다.
MyBatis는 Apache License 2.0에 따라 배포 된 무료 소프트웨어이며 Ibatis 3.0의 지점입니다. 유지 보수 팀에는 IBATIS 스타트 업 멤버도 포함됩니다.
다른 객체 관계 매핑 프레임 워크와 달리 MyBatis는 Java 객체를 데이터베이스 테이블과 연결하지 않고 Java 메소드와 SQL 문과 SQL 문과 연결됩니다. MyBatis를 사용하면 저장 프로 시저, 뷰, 다양한 복잡한 쿼리 및 데이터베이스의 독점적 기능과 같은 다양한 데이터베이스 기능을 최대한 활용할 수 있습니다. 레거시 데이터베이스, 불규칙한 데이터베이스 또는 SQL 실행을 완전히 제어하려면 mybatis가 좋은 선택입니다.
JDBC와 비교하여 MyBatis는 관련 코드를 단순화합니다. SQL 문은 한 줄의 코드로 실행할 수 있습니다. MyBatis는 SQL 문의 실행 결과를 객체 트리와 선언적으로 매핑하는 매핑 엔진을 제공합니다. 내장 XML 유사 표현식 언어를 사용하거나 Apache Velocity-Integrated 플러그인을 사용하여 SQL 문을 동적으로 생성 할 수 있습니다.
Mybatis는 Spring Framework 및 Google Guice와 통합되어 개발자가 종속성 문제를 절약 할 수 있습니다.
Mybatis는 선언적 데이터 캐싱을 지원합니다. SQL 문이 "캐시 가능"로 표시되면 데이터베이스가 처음 실행될 때 얻은 모든 데이터는 캐시에 저장됩니다. 이 명령문이 향후 실행되면 결과는 데이터베이스를 다시 누르지 않고 캐시에서 읽을 것입니다. Mybatis는 기본적으로 Java Hashmap 기반 캐시 구현과 Oscache, Ehcache, Hazelcast 및 Memcached와의 연결을위한 기본 커넥터를 제공합니다. Mybatis는 다른 캐시 구현에 API도 제공합니다.
중요한 요점
이 기간 동안 학습 후 MyBatis의 주요 과정은 다음 단계가 될 수 없습니다.
1. XML 구성 파일에서 SessionFactory를 얻은 다음 SessionFactory에서 해당 세션을 생성합니다.
2. 세션 객체를 사용하여 해당 CRUD 작업 (추가, 삭제, 수정 및 쿼리) 및 비즈니스 데이터에 대한 해당 트랜잭션 제어를 완료하십시오.
3. 과도한 자원 소비를 피하기 위해 사용 후 해당 세션을 닫으십시오.
4. 해당 Mapper XML 파일을 사용하여 비즈니스 엔티티의 Javabean과 데이터베이스 테이블간에 해당 맵 작동을 구성하십시오.
전쟁 전 준비 :
1. 개발 환경 Eclipse Javaee IDE, JDK 1.6, 데이터베이스 MySQL 5.5
2. 나중에 사용하려면 해당 JAR 패키지를 다운로드하십시오
mybatis-3.2.3.3.zip 감압 후 mybatis-3.2.3.jar, => 다운로드 주소 : http://code.google.com/p/mybatis/ (mybatis core 패키지)
mybatis-generator-core-1.3.1.jar => 다운로드 주소 : http://code.google.com/p/mybatis/wiki/generator (mybatis는 자동으로 구성 파일 패키지를 생성 함)
mysql-connector-java-5.1.26-bin.jar => 다운로드 주소 : http://dev.mysql.com/downloads/connector/j/ (Mysql의 JDBC 드라이버 패키지)
건설 단계
다음으로, Eclipse에서 Mybatisdemo라는 Java 프로젝트 프로젝트를 만들고 아래 그림과 같이 해당 패키지 구조 및 폴더 구조를 만들 수 있습니다. 여기서 구성 및 맵퍼는 각각 폴더입니다.
해당 데모 러너 프로그램과 Javabean 객체는 Package David.mybatis.demo 및 Package David.mybatis.Model에 저장되며 방금 다운로드 한 3 자 JAR 패키지는 LIB 폴더에 저장됩니다.
다음 디렉토리를 만든 후 아래 그림과 같이 해당 JAR 패키지를 추가 할 수 있습니다.
완료된 후 다음 SQL을 실행하여 3 개의 테이블, 방문자 (방문자 테이블), 웹 사이트 (웹 사이트 테이블) 및 채널 (채널 테이블)을 포함하여 데모에 필요한 테이블 구조를 설정하십시오.
/*방문자 생성*/테이블 방문자 생성 (ID int (11) NOT NULL AUTO_INCREMENT, 이름 VARCHER (1000) NOLL NOL NOT NULL, 이메일 VARCHAR (1000) NULL NOT NULL NOT NULL DEFAULT 1, CreateTime DateTime, 기본 키 (ID))/*웹 사이트 작성*/varchar (Id int int int auto_increment, 이름) 방문자 (id), 상태 int null default 1, createTime dateTime)/*채널 테이블 생성*/테이블 채널 생성 (ID int null 기본 키 키 키 오토 _increment, 이름 varchar (1000) null, websiteid int references 웹 사이트 (id), 상태 int null default 1, createTime dateTime)
이 모든 것이 끝나면 우리는 그것을 시작할 것입니다 ~
처음에 언급했듯이 모든 mybatis 구성은 XML 구성 파일에서 유래합니다. 구성 폴더에서 mybatis_demo_config.xml이라는 새 구성 파일을 만들어야합니다. 이것은 우리가 나중에 운영 해야하는 핵심 작업 중 하나입니다.
이 파일을 구성 할 때는 계층 적 순서 요구 사항이 있고 마음대로 변경할 수없는 <configuration> 노드의 요소에주의를 기울여야합니다. 그렇지 않으면 XML 구성 파일을로드 할 때 예외가 발생하여 후속 작업이 실패합니다.
특정 노드 설명은 http://mybatis.github.io/mybatis-3/zh/configuration.html#을 확인할 수 있습니다. 여기서 우리는보다 일반적으로 사용되는 노드, 변형기, 환경, 매퍼에 대해서만 이야기합니다.
1. findealiases => 별칭 노드. 구성 파일에서 완전히 정규화 된 이름 대신이 별칭을 사용하도록이 노드의 속성을 설정할 수 있습니다.
예를 들어 <formealias type = "david.mybatis.model.visitor"alias = "Visitor" />입니다
2. 환경 => 환경 노드, 데이터 연결 관련 정보 구성
3. Mappers => SQL 매핑 명령문 구성.
가장 간단한 구성은 다음과 같습니다.
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype configuration public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd "> confialias> <typealias> <typealias. type = "david.mybatis.model.visitor"alias = "방문자" /> < /indecealiases> <환경 기본값 = "개발"> <환경 ID = "Development"> <transactionManager type = "jdbc"> < /transactionManager> <dataSource type = "putured"> <property name = "driver"! ? useUnicode = true & charac value = "123456"/> </datasource> </환경> </환경> <mappers> <Mapper Resource = "Mapper/VisitorMapper.xml"/> </mappers> </configuration>
David.mybatis.demo 패키지 아래에서 mybatisutils라는 새로운 클래스를 만듭니다.이 방법은 SQLSESSION 및 닫기 SQLSESSION을 얻는 방법을 저장하여 다중 재사용을 용이하게합니다.
package david.mybatis.demo; import java.io.inputStream; import org.apache.ibatis.io.resources; import org.apache.session.section.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import org.apache.ssions.sqlsessionctorybuilder; david.mybatis.model.crud_enum; public class mybatisutils {private static final String config_path = "config/mybatis_demo_config.xml"; /** 데이터베이스 액세스 링크 가져 오기*/ public static sqlsession getSqlsession () {sqlsession session = null; try {inputStream stream = resources.getResourCeasStream (config_path); // 해당 데이터베이스 환경은 해당 환경에 따라 읽을 수 있습니다. sqlsessionFactory factory = 새로운 sqlsessionfactorybuilder () .Build (stream); 세션 = factory.opensession (); } catch (예외 e) {// todo : 핸들 예외 e.printstacktrace (); } 반환 세션; } / * * 데이터베이스 액세스 링크 가져 오기 * / public static void closesession (sqlsession session) {session.close (); } /** 반환 작업 레코드 레코드 메시지* / public static void showmessages (crud_enum 유형, int count) {switch (type) {case add : system.out.println ( "추가" + count + "레코드"); 부서지다; Case Delete : System.out.println ( "삭제 된" + count + "레코드"); 부서지다; 사례 업데이트 : System.out.println ( "업데이트 된" + count + "레코드"); 부서지다; 케이스 쿼리 : System.out.println ( "일치" + count + "레코드"); 부서지다; 사례 목록 : System.out.println ( "Total" + Count + "레코드"); 부서지다; 기본값 : 브레이크; }}}Package David.myBatis.Model에서 방문자라는 새 클래스를 작성하여 해당 또는 매핑으로 사용하십시오.
package david.mybatis.model; import java.text.simpledateformat; import java.util.date; public class 방문자 {private int id; 개인 문자열 이름; 개인 문자열 이메일; 개인 int 상태; 개인 날짜 CreateTime; public visitor () {// todo 자동 생성 생성자 스터브 createTime = new Date (); } 공개 방문자 (문자열 이름, 문자열 이메일) {this.name = 이름; this.email = 이메일; this.status = 1; this.createTime = 새 날짜 (); } public int getId () {return id; } public void setName (문자열 이름) {this.name = 이름; } public String getName () {return name; } public void seteMail (문자열 이메일) {this.email = 이메일; } public String getEmail () {반환 이메일; } 공개 날짜 getCreateTime () {return createTime; } @Override public String toString () {// todo 자동 생성 메소드 스텁 리턴 string.format ( "{id : %d, name : %s, createTime : %s}", id, name, new simpledateformat ( "yyyy-mm-dd hh : mm : ss"); }}해당 SQL 문을 매핑하려면 package david.mybatis.demo에서 새 VisitorMapper.xml을 만듭니다.
여기에서 namespace => david.mybatis.demo.ivisitoroperation은 해당 패키지 아래의 실제 파일 이름과 연관되어야합니다. 그렇지 않으면 해당 매핑 파일을 성공적으로로드 할 수 없습니다.
<Mapper 네임 스페이스 = "david.mybatis.demo.ivisitoroperation"> <select id = "basic Query"parametertype = "int"resulttype = "visitater"> select * id =#{id} 및 상태> 0 주문 </select> </mapper> 다음으로 다음 프로그램을 실행하십시오
public static void testbasicquery (int id) {sqlsession session = mybatisutils.getSqlsession (); try {방문자 방문자 = (방문자) session.selectone ( "david.mybatis.demo.ivisitoroperation.basicquery", id); mybatisutils.closesession (세션); System.out.println (방문자); } catch (예외 e) {// todo : 핸들 예외}}} 가장 간단한 실행 결과가 나옵니다
이것은 Mybatis 시리즈의 Helloword입니다 ~