mybatis 생성기에 대해
Mybatis Generator (MBG)는 Mybatis 코드 생성기 Mybatis 및 Ibatis입니다. 다양한 버전의 mybatis에 대한 코드를 생성하고 Ibatis 2.2.0 다음에 코드를 생성 할 수 있습니다. 그는 데이터베이스의 테이블 (또는 테이블)을 내성 한 다음 테이블의 테이블 (다중)에 액세스하는 데 사용할 수있는 기본 객체를 생성 할 수 있습니다. 이러한 방식으로 데이터베이스 테이블과 상호 작용할 때 객체 및 구성 파일이 필요하지 않습니다. MBG는 데이터베이스 작업에 가장 큰 영향을 미치는 간단한 CRUD (삽입, 쿼리, 업데이트, 삭제) 작업을 해결합니다. 여전히 연맹 쿼리 및 저장된 절차에서 SQL과 객체를 필기해야합니다.
mybatis 생성기는 다음을 생성합니다.
Java Pojos 매칭 테이블 구조에는 다음이 포함될 수 있습니다.
이 클래스간에 적절한 상속 관계가있을 것입니다. 생성기는 다양한 유형의 POJO의 계층 구조를 생성하도록 구성 할 수 있습니다. 예를 들어, 원하는 경우 각 테이블에 대해 별도의 엔티티 객체를 생성하도록 선택할 수 있습니다.
MyBatis/iBatis는 SQL 매핑 XML 파일과 호환됩니다. MBG는 각 테이블에 대한 간단한 CRUD 작업을위한 구성에서 SQL을 생성합니다. 생성 된 SQL 문에는 다음이 포함됩니다.
표의 구조에 따라 생성 된 문장은 다양합니다 (예 : 표에 기본 키가 없으면 MBG는 기본 키 메소드에 의해 업데이트를 생성하지 않습니다).
Java 클라이언트 클래스는 위의 객체를 적절하게 사용하며 Java 클라이언트 클래스를 생성 할 때 선택 사항입니다. MBG는 MyBatis 3.x에 대한 다음 클라이언트 클래스를 생성합니다.
mybatis 3.x와 함께 사용할 수있는 매퍼 인터페이스 클래스
MBG는 iBatis 2.x에 대한 다음 클라이언트 클래스를 생성합니다.
스프링 프레임 워크를 준수하는 DAO 클래스.
IBATIS SQL 매핑 API의 DAO 만 사용하십시오. 이 DAO는 다음 두 가지 방법으로 생성 될 수 있습니다. 시공 방법 또는 세터 주입을 통해 SQLMAPCLIENT를 제공하십시오.
DAO는 Ibatis DAO 프레임 워크 (IBATIS의 선택적 부분, 구식이므로 Spring 프레임 워크를 대신 사용하는 것이 좋습니다).
Mybatis Generator는 반복 개발 환경에서 잘 작동 할 수 있으며 지속적인 빌드 환경에서 Ant 작업 또는 Maven 플러그인 역할을합니다. MBG를 실행할 때 기억해야 할 중요한 사항 :
MBG는 이미 존재하고 새로 생성 된 파일과 복제 된 XML을 자동으로 병합합니다. MBG는 생성 한 XML에 대한 수정을 덮어 쓰지 않습니다. 사용자 정의 변경을 잃을 염려없이 계속해서 실행할 수 있습니다. MBG는 이전 실행에서 생성 된 모든 XML 요소를 대체합니다.
MBG는 Java 파일을 병합하지 않으며 기존 파일을 덮어 쓰거나 새로 생성 된 파일을 다른 고유 이름으로 저장할 수 있습니다. 이러한 변경 사항을 수동으로 병합 할 수 있습니다. Eclipse 플러그인을 사용하면 MBG가 자동으로 Java 파일을 병합 할 수 있습니다.
기본 사용
MBG는 주로 XML 구성 파일에 의존합니다. 먼저 MybatisGenerator라는 새로운 프로젝트를 다시 만들고 Config, David.Test 및 David.mbg라는 3 개의 새로운 패키지를 만들 수 있습니다. 구성 패키지는 주로 실제 mybatis에 필요한 구성 파일을 저장합니다. 이전 장의 프로젝트에서 mybatis_demo_config.xml을 복사하여 프로그램을 테스트하기 위해이 디렉토리 등에 넣을 수 있습니다. 이름에서 알 수 있듯이 David.test는 일반적으로 사용되는 방법과 테스트 프로그램을 저장하는 것입니다. 또한 이전 장에서 Mybatisutils 도구 클래스를 사용하고 테스트 목적으로 해당 메인 기능을 만들 수 있습니다. 마지막 David.mbg는 오늘 구성 할 XML이며 MBG는 구성 파일을 생성합니다.
그림과 같이 아래에서 mbg_configuration.xml이라는 새 구성 파일을 만들었습니다. 세부 사항은 다음과 같습니다.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype generatorconfiguration public "-// mybatis.org//dtd mybatis generator configuration 1.0 // en" "http://mybatis.org/dtd/mybatis-conerater-config_1_0.dtd"> <classPathentry location = "./ lib /mysql-connector-java-5.1.26-bin.jar" /> <context id = "mybatisdemoformysql"targetRuntime = "myBatis3"> <!-제어 주석-> <commentGenerator> <!-모든 모든 자동으로 생성 된 주석 파일을 제거 할 것인지 "" 자동으로 생성 된 모든 파일의 타임 스탬프를 제거할지 여부, 기본값-> <속성 이름 = "suppressDate"value = "true" /> < /commentGenerator> <!-제어 데이터베이스-> <jdbcConnection driver class = "com.mysql.jdbc.driver" ConnectionUrl = "jdbc : mysql : //127.0.0.1 : 3306/mybatis_db? charac < /javatyperesolver> <!-데이터베이스 테이블에 해당하는 모델-> <javamodelgenerator targetpackage = "david.model"targetproject = "src"> <property name = "enablesubpackages"value = "true" /<property name = "trimstrings"value = "true"-< /javamodelgenerater> <! <sqlmapgenerator targetpackage = "david.mappers"targetProject = "src"> <property name = "enablesubPackages"value = "true" /> < /sqlmapgenerator> <!-맵퍼 인터페이스 제어-> <javaclientgenerator targetpackage = "src. inter"type = "xmlmappper" 이름 = "enablebpackages"value = "true" /> <property name = "MethodnameCalculator"value = "extended" /> < /javaclientgenerator> <!-데이터베이스의 스키마, tabainObjectName이 JavaBean 클래스 이름에 해당하는지 여부를 나타냅니다. domainObjectName = "Visitor"enableCountByexample = "false"enableUpdateByexample = "false"enabledeLeteByexample = "false"enableStByexample = "select"selectByamplemeQueryId = "false"> <GeneratedKey Column = "id"sqlstatement = "mysql"> <ingorecolumn column = "status"delimitedcolumnname = "false"/> </table> </context> </generatorconfiguration>
주로 이러한 노드라는 것을 알 수 있습니다
<ClassPathentry> => JDBC 드라이버 패키지가 저장된 위치는 상대 경로 또는 절대 경로를 사용하는 데 사용할 수 있습니다. 이 예에서는 상대 경로가 사용됩니다.
<CERTXT> => 데이터베이스의 모든 테이블 구성을 준수하면 여러 컨텍스트, 하나의 구성 MySQL 및 하나의 구성 Oracle이있을 수 있습니다.
<cectext> 노드 아래의 주요는 다음과 같습니다.
<commentGenerator> => 댓글 생성기 노드,이 예제의 2 개의 하위 테이블은
suppressallcomments => 자동 생성 된 모든 주석 파일을 제거할지 여부
suppressdate => 자동 생성 된 모든 파일의 타임 스탬프를 제거할지 여부, 기본값은 false입니다.
<jdbcConnection> => 데이터베이스 연결 구성 정보
<javatyperesolver> => jdbc의 소수점과 숫자 유형을 Java.math.bigdeciaml 양식 표현으로 변환
<JavamodelGenerator> => Pojo Entity 클래스, TargetPackage = "David.Model"구성 등록에 해당하면 실제 비즈니스, TargetProject = "SRC"에 따라 이름을 지정할 수 있습니다. Eclipse 환경에서 프로젝트 및 소스 폴더의 경로는 일반적으로 SRC 디렉토리라고합니다. 패키지는이 디렉토리에서 새로 만들어집니다. 이클립스 환경이 아닌 경우 여기의 값은 실제 파일 시스템 경로 여야합니다. 지정된 경로가 존재하지 않으면 MBG가 해당 폴더 자체를 생성하지 않기 때문에 오류 가보고됩니다.
<sqlmapgenerator> => 해당 엔티티 Mapper.xml을 생성하도록 구성하십시오. mapper3.x의 경우 = "xmlmapper"를 입력해야합니다.
<javaclientgenerator> => configure mapper.xml의 일련의 CRUD 메소드 SQL 문에 해당하는 해당 인터페이스 클래스를 생성합니다.
<pable> => 해당 데이터베이스를 구성합니다.이 데이터베이스는 도메인 클래스 이름 (즉, 엔티티 클래스 이름)이 생성하려는 것을 나타냅니다. 이 예에서는 모든 불필요한 예제 생성 정보를 닫았습니다.
위의 모든 정보는 해당 문서에 대해 공식 웹 사이트에서 확인하거나 해당 구성 지침 및 관련 응용 프로그램 예제와 함께 내 파일에서 다운로드 할 수 있습니다. 문서를 다운로드하십시오
위의 정보를 구성한 후 마지막 단계는 무엇입니까? 우리는이 스크립트 파일을 실행할 것입니다. 공식 설명에는 4 가지 방법이 있습니다. 첫 번째는 명령 행 메소드를 통한 것입니다. 두 번째와 세 번째는 Ant 또는 Maven과 같은 도구를 통해 생성됩니다. 마지막은 Java 코드를 통해 생성됩니다. 우리는 Java 보리를 통해 생성하는 방법을 사용합니다. Demorun 클래스에 생성 된 스크립트를 추가하는 방법은 다음과 같습니다.
Private STATIC void generatembgconfiguration () { /** MyBatis는 해당 사항을 생성하기위한 생성기 도구와 함께 제공됩니다* / list <string> 경고 = new ArrayList <string> (); 부울 덮어 쓰기 = true; file configfile = 새 파일 ( "./ src/david/mbg/mbg_configuration.xml"); configurationParser CP = 새로운 구성 경영기 (경고); 구성 구성 = null; try {config = cp.parseconfiguration (configfile); } catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } catch (xmlparserexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } defaultshellCallback 콜백 = 새로운 defaultshellCallback (오버 히트); try {mybatisgenerator mybatisgenerator = new mybatisgenerator (config, 콜백, 경고); mybatisgenerator.generate (null); } catch (invalidConfigurationException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } catch (InterruptedException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } system.out.println ( "MyBatis 구성이 성공적으로 생성되었습니다!"); } 실행 후 프로젝트를 새로 고치면 다음이 메인 구성을 마술처럼 생성한다는 것을 알게됩니다. 아래 그림의 빨간 상자 섹션 :
마지막으로 자동 생성 된 결과를 사용해 봅시다. 처음 6 개의 챕터를 참조하여 해당 CRUD 테스트 방법을 다음과 같이 Demorun에 추가 할 수 있습니다.
/** 쿼리 방문자 정보*/ public static void testgenerateadd () {sqlsession session = mybatisutils.getSqlsession (); visitormapper voperation = session.getMapper (visitorMapper.class); 방문자 방문자 = 새 방문자 (); visitor.setvisitor_name ( "hello2"); Visitor.SetEmail ( "[email protected]"); visitor.setcreateTime (new date ()); int count = voperation.insert (방문자); 세션 .commit (); mybatisutils.closesession (세션); mybatisutils.showmessages (crud_enum.add, count); } /** 쿼리 방문자 정보* / public static void testGenerateQuery (int id) {sqlsession session = mybatisutils.getSqlsession (); visitormapper voperation = session.getMapper (visitorMapper.class); 방문자 방문자 = voperation.selectByPrimaryKey (ID); mybatisutils.closesession (세션); mybatisutils.showmessages (crud_enum.query, 1); System.out.println (방문자); } public static void testgeneratedElete (int id) {sqlsession session = mybatisutils.getSqlsession (); visitormapper voperation = session.getMapper (visitorMapper.class); int count = voperation.DeleteByPrimaryKey (ID); 세션 .commit (); mybatisutils.closesession (세션); mybatisutils.showmessages (crud_enum.delete, count); } public static void testgenerateupdate (int id) {sqlsession session = mybatisutils.getSqlsession (); visitormapper voperation = session.getMapper (visitorMapper.class); 방문자 방문자 = voperation.selectByPrimaryKey (ID); System.out.println (방문자); 문자열 이름 = visitor.getvisitor_name (); if (name.contains ( "update")) {visitor.setvisitor_name (name.substring (0, name.indexof ( "update"))); } else {visitor.setvisitor_name (name + "update"); } int count = voperation.updateByPrimaryKey (방문자); 세션 .commit (); mybatisutils.closesession (세션); mybatisutils.showmessages (crud_enum.update, count); System.out.println (방문자); } 테스트 프로그램을 실행하면 결과가 실행됩니다
이것을 사용하면 효율성을 크게 향상시키는 데 도움이되었으며 번거로운 구성에 대해 걱정할 필요가 없다고 생각하십니까? 적어도 반복적이고 불필요한 단계를 수행 할 필요는 없습니다. 이것들은^0^를 수행 할 도구에 맡겨 두십시오. 물론 실제로 사용하면 생성 후 해당 클래스 정보 및 인터페이스 정보 이름을 수정해야 할 수도 있습니다. 물론, 이러한 워크로드는 그리 많지 않습니다. 이 내용이 오늘날 구성 해야하는 학생들에게 도움이되기를 바랍니다.