Mybatis의 전임자는 원래 Apache의 오픈 소스 프로젝트 인 Ibatis였습니다. 2010 년 에이 프로젝트는 Apache Software Foundation에서 Google 코드로 이전되었으며 Mybatis로 이름이 바뀌 었습니다. MyBatis는 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하는 우수한 지속성 계층 프레임 워크입니다. MyBatis는 거의 모든 JDBC 코드 및 매개 변수의 수동 설정과 결과 세트의 검색을 제거합니다. MyBatis는 구성 및 원래 매핑, 맵핑 인터페이스 및 Java의 Pojos (오래된 Java 개체, 일반 Java 개체)를 데이터베이스의 레코드로 사용하는 간단한 XML 또는 주석을 사용합니다.
Mybatis의 기능 아키텍처는 3 개의 층으로 나뉩니다 (그림은 Baidu 백과 사전에서 빌려옵니다) :
1) API 인터페이스 계층 : 개발자가 데이터베이스를 조작하는 외부 사용을위한 인터페이스 API를 제공합니다. 인터페이스 계층이 호출 요청을 수신하면 데이터 처리 계층을 호출하여 특정 데이터 처리를 완료합니다.
2) 데이터 처리 계층 : 특정 SQL 검색, SQL 구문 분석, SQL 실행 및 실행 결과 매핑 처리 등의 책임이 있습니다. 주요 목적은 통화 요청에 따라 데이터베이스 작업을 완료하는 것입니다.
3) 기본 지원 계층 : 연결 관리, 트랜잭션 관리, 구성로드 및 캐시 처리를 포함한 가장 기본적인 기능 지원을 담당합니다. 이것들은 모두 일반적인 것들이며 가장 기본적인 구성 요소로 추출합니다. 데이터 처리 계층의 상부 계층에 대한 가장 기본적인 지원을 제공합니다.
여기 데모를 사용하는 간단한 mybatis가 있습니다.
전체 구조
POM 의존성
두 개의 항아리 패키지를 참조해야하며, 하나는 mybatis이고 다른 하나는 MySQL-Connector-Java입니다. Maven 프로젝트 인 경우 다음과 같이 POM에 종속성을 추가하십시오.
<pectionency> <groupId> org.mybatis </groupid> <artifactid> mybatis </artifactid> <bersion> 3.2.3 </version> </fectionency> <pectionement> <groupId> mySQL </groupId> <artifactID> mySQL-Connector-Java </artifactid> <5.1.26 </version> </exceence>
데이터 준비
테스트를 위해 MySQL에서 포인트 데이터를 작성하십시오.
데이터베이스 생성 mybatis_test; 테이블 사용자 만들기 사용자 생성 (age integer not null, nam varchar (64) nulel default ''); 사용자 값 삽입 (18, 'zhanjindong'); 사용자 값 삽입 (20, 'zhangsan');
구성 파일
두 가지 유형의 구성 파일이 필요합니다. 하나는 mybatis 구성 파일 Mybatis-config.xml입니다. 예에서는 매우 간단한 구성입니다. 인터넷에 자세한 구성에 대한 많은 지침이 있습니다.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype configuration public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd "> configuration> <! <! 이름 = "Cacheenabled"value = "false" /> <setting name = "usegeneratedKeys"value = "true" /> <setting name = "defaultexecutoType"value = "Reuse" /> < /settings> <tondealiases> <faintealias alias = "user"type = "test.mybatis.user" /> <antifalments = "개발"> <transactionManager type = "jdbc"/> <dataSource type = "pooled"> <property name = "driver"value = "com.mysql.jdbc.jdbc.driver"/> <property name = "url"value = "jdbc : mysql : //192.168.71.38 : 3306/mybatis_test"/>/>>>> <assern " value = "root"/> <property name = "password"value = "123456"/> </dataSource> </환경> </환경> <mappers> <Mapper Resource = "Mappers/usermapper.xml"/> </mappers> </configuration>
다른 유형은 데이터 액세스 인터페이스 매핑 파일입니다. 예에서는 usermapper.xml입니다. 이 파일은 src/main/resource 또는 subdirectory mybatis에서 찾을 수 있습니다. mybatis-config.xml에서 Mappers/Mapper 노드의 자원에 의해 지정됩니다.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namperpace ="test.mybatis. Usermapper 인터페이스의 경로 "-> <insert id ="InsertUser "ParameterType ="User "> 사용자 (이름, Age) 값 (이름, Age) 값 (#{name},#{age}) <!-여기, SQL의 끝에 반시 콜론이 추가 될 수 없습니다. usermapper 인터페이스-> <select id = "getUser"resulttype = "user"parametertype = "java.lang.string"> select * where where name =#{name} </select> </mapper> 해당 매핑 파일은 네임 스페이스 테스트의 ousermapper 인터페이스입니다. MyBatis는 데이터 테이블에 액세스하기 위해 인터페이스 만 정의합니다.
패키지 테스트 .mybatis; public interface usermapper {public void InsertUser (사용자); 공개 사용자 getUser (문자열 이름);} pojo가 필요합니다 : user.java
패키지 테스트 .myBatis; 공개 클래스 사용자 {개인 문자열 이름; 개인 정수 시대; 공개 문자열 getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public integer getage () {return age; } public void setage (정수 시대) {this.age = age; } 공개 사용자 (문자열 이름, 정수 시대) {super (); this.name = 이름; this.age = age; } public user () {super (); }} 시험
MyBatis 데이터베이스 작업은 SQLSESSION이라는 클래스를 사용합니다. 이 클래스는 sqlsessionFactory를 통해 생성됩니다. 일반적으로 전 세계적으로 sqlsessionfactory를 유지하는 것이 좋습니다.
testmybatis.java
패키지 test.mybatis; import java.io.ioexception; import java.io.reader; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlsession actory; import org.apache.ibatis.session.sectorybuilder; public static sclsitil {private sqlaltory {private sqlactorybuilder; sqlsessionFactory; static {String resource = "mybatis-config.xml"; 독자 독자 = null; try {reader = resources.getResourceAsReader (resource); } catch (ioException e) {System.out.println (e.getMessage ()); } sqlsessionFactory = 새 SQLSESSIONFACTORYBUILDER (). 빌드 (리더); } public static sqlsessionFactory getSqlSessionFactory () {return sqlsessionFactory; }}테스트 코드는 다음과 같습니다.
testmybatis.java
패키지 test.mybatis; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; public class testmybatis {static sqlsessionfactory sqlsessionfactory = null; static {sqlsessionfactory = mybatisutil.getSqlSessionFactory (); } public static void main (String [] args) {testAdd (); getUser (); } public static void testAdd () {sqlsession sqlsession = sqlsessionfactory.opensession (); {usermapper usermapper = sqlsession.getmapper (usermpper.class); 사용자 사용자 = 새 사용자 ( "Lisi", New Integer (25)); usermapper.insertuser (사용자); sqlsession.commit (); // 여기에 제출해야합니다. 그렇지 않으면 데이터가 데이터베이스를 입력하지 않습니다} 마지막으로 {sqlsession.close (); }} public static void getUser () {sqlsession sqlsession = sqlsessionfactory.opensession (); {usermapper usermapper = sqlsession.getmapper (usermpper.class); 사용자 user = usermapper.getUser ( "Zhangsan"); System.out.println ( "이름 :" + user.getName () + "| age :" + user.getage ()); } 마침내 {sqlsession.close (); }}} 주목해야 할 것
1. MyBatis는 log4J를 사용하여 로그를 녹음하지만 디버그 모드를 켜는 것은 성능에 큰 영향을 미치는 것 같습니다.
2. Mybatis의 쿼리 캐시는 성능에 큰 영향을 미치며 활성화와 활성화 사이의 격차는 매우 큽니다.
참고 : 캐시 라인은 Mapper 파일에 추가되어야합니다. 그렇지 않으면 적용되지 않습니다.
샘플 코드 다운로드 : 코드 다운로드
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.