ããå¨MBGä¸ï¼æ主è¦ä¹æéè¦çå°±æ¯XMLé
ç½®æ件ï¼å æ¤æ¬ç¯æç« ä¸»è¦çå
容就æ¯XMLé
ç½®ã
ããè¿éæç
§é
ç½®ç顺åºå¯¹é
ç½®é个讲解ï¼æ´ç»çå
容å¯ä»¥é
åä¸æææ¡£åç
§ã
ãã1. é
ç½®æ件头
ãã<?xml version="1.0" encoding="UTF-8"?>
ãã<!DOCTYPE generatorConfiguration
ããPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
ãã"
http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
ãã使ç¨ææ°ççMBGéè¦ä½¿ç¨ä¸é¢çxml头ï¼é
ç½®æ件å¿
é¡»å
å«ä¸é¢çDOCTYPEã
ãã2. æ ¹èç¹<generatorConfiguration>
ããgeneratorConfigurationèç¹æ²¡æä»»ä½å±æ§ï¼ç´æ¥åèç¹å³å¯ï¼å¦ä¸ï¼
ãã<generatorConfiguration>
ãã<!-- å
·ä½é
ç½®å
容 -->
ãã</generatorConfiguration>
ãã3. <generatorConfiguration>åå
ç´
ããä»è¿æ®µå¼å§ï¼å°±æ¯é
ç½®ç主è¦å
容ï¼è¿äºé
ç½®é½æ¯generatorConfigurationå
ç´ çåå
ç´ ã
ããå
å«ä»¥ä¸åå
ç´ ï¼æä¸¥æ ¼ç顺åºï¼ï¼
ãã<properties> (0个æ1个)
ãã<classPathEntry> (0个æå¤ä¸ª)
ãã<context> (1个æå¤ä¸ª)
ãã3.1 <properties> å
ç´
ããè¿ä¸ªå
ç´ ç¨æ¥æå®å¤é¨çå±æ§å
ç´ ï¼ä¸æ¯å¿
é¡»çå
ç´ ã
ããå
ç´ ç¨äºæå®ä¸ä¸ªéè¦å¨é
ç½®ä¸è§£æ使ç¨çå¤é¨å±æ§æ件ï¼å¼å
¥å±æ§æ件åï¼å¯ä»¥å¨é
ç½®ä¸ä½¿ç¨ ${property}è¿ç§å½¢å¼çå¼ç¨ï¼éè¿è¿ç§æ¹å¼å¼ç¨å±æ§æ件ä¸çå±æ§å¼ã 对äºåé¢éè¦é
ç½®ç**jdbcä¿¡æ¯**åtargetProjectå±æ§ä¼å¾æç¨ã
ããè¿ä¸ªå±æ§å¯ä»¥éè¿resourceæè
urlæ¥æå®å±æ§æ件çä½ç½®ï¼è¿ä¸¤ä¸ªå±æ§åªè½ä½¿ç¨å
¶ä¸ä¸ä¸ªæ¥æå®ï¼åæ¶åºç°ä¼æ¥éã
ããresourceï¼æå®**classpath**ä¸çå±æ§æ件ï¼ä½¿ç¨ç±»ä¼¼com/myproject/generatorConfig.propertiesè¿æ ·çå±æ§å¼ã
ããurlï¼å¯ä»¥æå®æ件系ç»ä¸çç¹å®ä½ç½®ï¼ä¾å¦file:///C:/myfolder/generatorConfig.properties
ãã3.2 <classPathEntry> å
ç´
ããè¿ä¸ªå
ç´ å¯ä»¥0æå¤ä¸ªï¼ä¸åéå¶ã
ããè¿ä¸ªå
ç´ çä½ç¨æ¯å°MBGè¿è¡æ¶éè¦ç¨å°çjarå
(æzipæ ¼å¼)æ·»å å°**classpath**ä¸ã
ããæ常è§çç¨æ³æ¯ï¼å½**classpath**ä¸é¢**没æ**JDBC驱å¨çæ¶åï¼æ们é常éè¿è¿ä¸ªå±æ§æå®é©±å¨çè·¯å¾ï¼ä¾å¦ï¼
ãã<classPathEntry location="E:\mysql\mysql-connector-java-5.1.29.jar"/>
ããå¦æéè¦ç¨å°å
¶ä»çjarå
ï¼ä¹å¯ä»¥è¿ä¹é
ç½®ï¼ä¾å¦å¦æä½ å¼åäºä¸ä¸ªMBGçæ件ï¼ä½ å°±å¯ä»¥éè¿è¿ç§æ¹å¼å å
¥å°**classpath**
ããè¿é注æä¸é¢éç¹å¼ºè°ç 没æ,ä¸è¬å¨é¡¹ç®ä¸ä½¿ç¨çæ¶åï¼**classpath**ä¸é¢é½æJDBC驱å¨ï¼å æ¤ä»é¡¹ç®ä¸å¯å¨çæ¶åä¸éè¦é
置该项ã
ãã建议:ç±äºè¯¥åæ°ä½¿ç¨äºç»å¯¹è·¯å¾ï¼å æ¤ä¸å©ç¨å¨ä¸åçµèä¸éç¨ï¼å æ¤å»ºè®®æ好æéè¦çjarå
æ¾å°é¡¹ç®ç**classpath**ä¸ï¼é¿å
æ¯ä¸ªäººé½å¾åç¬é
置路å¾ã
ãã3.3 <context> å
ç´
ããå¨MBGçé
ç½®ä¸ï¼è³å°éè¦æä¸ä¸ª<context>å
ç´ ã
ãã<context>å
ç´ ç¨äºæå®çæä¸ç»å¯¹è±¡çç¯å¢ãä¾å¦æå®è¦è¿æ¥çæ°æ®åºï¼è¦çæ对象çç±»ååè¦å¤ççæ°æ®åºä¸ç表ãè¿è¡MBGçæ¶åè¿å¯ä»¥æå®è¦è¿è¡ç<context>ã
ãã该å
ç´ åªæä¸ä¸ª**å¿
éå±æ§**idï¼ç¨æ¥å¯ä¸ç¡®å®ä¸ä¸ª<context>å
ç´ ï¼è¯¥idå±æ§å¯ä»¥å¨è¿è¡MBGç使ç¨ã
ããæ¤å¤è¿æå 个**å¯éå±æ§**ï¼
ããdefaultModelType:**è¿ä¸ªå±æ§å¾éè¦**ï¼è¿ä¸ªå±æ§å®ä¹äºMBGå¦ä½çæ**å®ä½ç±»**ã
ããè¿ä¸ªå±æ§æ以ä¸å¯éå¼ï¼
ããconditional:*è¿æ¯é»è®¤å¼*,è¿ä¸ªæ¨¡ååä¸é¢çhierarchical类似ï¼é¤äºå¦æé£ä¸ªåç¬çç±»å°åªå
å«ä¸ä¸ªå段ï¼å°ä¸ä¼çæä¸ä¸ªåç¬çç±»ã å æ¤,å¦æä¸ä¸ªè¡¨ç主é®åªæä¸ä¸ªå段,é£ä¹ä¸ä¼ä¸ºè¯¥å段çæåç¬çå®ä½ç±»,ä¼å°è¯¥å段å并å°åºæ¬å®ä½ç±»ä¸ã
ããflat:该模å为æ¯ä¸å¼ 表åªçæä¸ä¸ªå®ä½ç±»ãè¿ä¸ªå®ä½ç±»å
å«è¡¨ä¸çææå段ã**è¿ç§æ¨¡åæç®åï¼æ¨è使ç¨ã**
ããhierarchical:å¦æ表æ主é®,é£ä¹è¯¥æ¨¡åä¼äº§çä¸ä¸ªåç¬ç主é®å®ä½ç±»,å¦æ表è¿æBLOBåæ®µï¼ åä¼ä¸ºè¡¨çæä¸ä¸ªå
å«ææBLOBå段çåç¬çå®ä½ç±»,ç¶å为ææå
¶ä»çå段çæä¸ä¸ªåç¬çå®ä½ç±»ã MBGä¼å¨ææçæçå®ä½ç±»ä¹é´ç»´æ¤ä¸ä¸ªç»§æ¿å
³ç³»ã
ããtargetRuntime:æ¤å±æ§ç¨äºæå®çæç代ç çè¿è¡æ¶ç¯å¢ã该å±æ§æ¯æ以ä¸å¯éå¼ï¼
ããMyBatis3:*è¿æ¯é»è®¤å¼*
ããMyBatis3Simple
ããIbatis2Java2
ããIbatis2Java5 ä¸è¬æ
åµä¸ä½¿ç¨é»è®¤å¼å³å¯ï¼æå
³è¿äºå¼çå
·ä½ä½ç¨ä»¥ååºå«è¯·æ¥çä¸æææ¡£ç详ç»å
容ã
ããintrospectedColumnImpl:该åæ°å¯ä»¥æå®æ©å±org.mybatis.generator.api.IntrospectedColumn该类çå®ç°ç±»ã该å±æ§çä½ç¨å¯ä»¥æ¥çæ©å±MyBatis Generatorã
ããä¸è¬æ
åµä¸ï¼æ们使ç¨å¦ä¸çé
ç½®å³å¯ï¼
ãã<context id="Mysql" defaultModelType="flat">
ããå¦æä½ å¸æä¸çæåExampleæ¥è¯¢æå
³çå
容ï¼é£ä¹å¯ä»¥æç
§å¦ä¸è¿è¡é
ç½®:
ãã<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
ãã使ç¨MyBatis3Simpleå¯ä»¥é¿å
å¨åé¢ç<table>ä¸é个è¿è¡é
ç½®ï¼åé¢ä¼æå°ï¼ã
ããMBGé
ç½®ä¸çå
¶ä»å 个å
ç´ ï¼åºæ¬ä¸é½æ¯<context>çåå
ç´ ï¼è¿äºåå
ç´ ï¼æä¸¥æ ¼çé
置顺åºï¼å
æ¬ï¼
ãã<property> (0个æå¤ä¸ª)
ãã<plugin> (0个æå¤ä¸ª)
ãã<commentGenerator> (0个æ1个)
ãã<jdbcConnection> (1个)
ãã<javaTypeResolver> (0个æ1个)
ãã<javaModelGenerator> (1个)
ãã<sqlMapGenerator> (0个æ1个)
ãã<javaClientGenerator> (0个æ1个)
ãã<table> (1个æå¤ä¸ª)
ããå
¶ä¸<property>å±æ§æ¯è¾ç¹æ®ï¼åé¢è®²è§£çæ¶åé½ä¼åç¶å
ç´ ä¸èµ·è¿è¡è®²è§£ãå¨è®²è§£<property>å±æ§åï¼æ们å
çç**ä»ä¹æ¯åé符ï¼**ã
ããè¿ééè¿ä¸ä¸ªä¾å说æãå设å¨Mysqlæ°æ®åºä¸æä¸ä¸ªè¡¨å为user infoï¼ä½ 没æçéï¼ä¸é´æ¯ä¸ä¸ªç©ºæ ¼ï¼è¿ç§æ
åµä¸å¦æååºselect * from user infoè¿æ ·çè¯å¥ï¼è¯å®æ¯è¦æ¥éçï¼å¨Mysqlä¸çæ¶åæ们ä¸è¬ä¼åæå¦ä¸çæ ·å:
ããselect * from `user info`
ããè¿éç使ç¨ç**ååå¼å·(`)**å°±æ¯**åé符**ï¼**åé符**å¯ä»¥ç¨äº**表å**æè
**åå**ã
ããä¸é¢ç»§ç»ç<property>æ¯æçå±æ§ï¼
ããautoDelimitKeywords
ããbeginningDelimiter
ããendingDelimiter
ããjavaFileEncoding
ããjavaFormatter
ããxmlFormatter
ããç±äºè¿äºå±æ§æ¯è¾éè¦ï¼è¿éä¸ä¸è®²è§£ã
ããé¦å
æ¯autoDelimitKeywordsï¼å½è¡¨åæè
å段å为SQLå
³é®åçæ¶åï¼å¯ä»¥è®¾ç½®è¯¥å±æ§ä¸ºtrueï¼MBGä¼èªå¨ç»è¡¨åæå段åæ·»å **åé符**ã
ããç¶åè¿é继ç»ä¸é¢çä¾åæ¥è®²beginningDelimiteråendingDelimiterå±æ§ã
ããç±äºbeginningDelimiteråendingDelimiterçé»è®¤å¼ä¸ºåå¼å·(")ï¼å¨Mysqlä¸ä¸è½è¿ä¹åï¼æ以è¿è¦å°è¿ä¸¤ä¸ªé»è®¤å¼æ¹ä¸º**ååå¼å·(`)**ï¼é
ç½®å¦ä¸ï¼
ãã<property name="beginningDelimiter" value="`"/>
ãã<property name="endingDelimiter" value="`"/>
ããå±æ§javaFileEncoding设置è¦ä½¿ç¨çJavaæ件çç¼ç ï¼é»è®¤ä½¿ç¨å½åå¹³å°çç¼ç ï¼åªæå½ç产çç¼ç éè¦ç¹æ®æå®æ¶æéè¦ä½¿ç¨ï¼ä¸è¬ç¨ä¸å°ã
ããæå两个javaFormatteråxmlFormatterå±æ§**å¯è½ä¼**å¾æç¨ï¼å¦æä½ æ³ä½¿ç¨æ¨¡æ¿æ¥å®å¶çæçjavaæ件åxmlæ件çæ ·å¼ï¼ä½ å¯ä»¥éè¿æå®è¿ä¸¤ä¸ªå±æ§çå¼æ¥å®ç°ã
ããæ¥ä¸æ¥åè对å
¶ä»çåå
ç´ é个è¿è¡ä»ç»ã
ãã3.3.1 <plugin> å
ç´
ãã该å
ç´ å¯ä»¥é
ç½®0个æè
å¤ä¸ªï¼ä¸åéå¶ã
ãã<plugin>å
ç´ ç¨æ¥å®ä¹ä¸ä¸ªæ件ãæ件ç¨äºæ©å±æä¿®æ¹éè¿MyBatis Generator (MBG)代ç çæå¨çæç代ç ã
ããæ件å°æå¨é
ç½®ä¸é
ç½®ç顺åºæ§è¡ã
ããæå
³æ件ç详ç»ä¿¡æ¯å¯ä»¥åèå¼åæ件åæä¾çæ件äºè§£æ´å¤ã
ãã3.3.2 <commentGenerator> å
ç´
ãã该å
ç´ æå¤å¯ä»¥é
ç½®1个ã
ããè¿ä¸ªå
ç´ é常æç¨ï¼ç¸ä¿¡å¾å¤äººé½æè¿è¿æ ·çéæ±ï¼å°±æ¯å¸æMBGçæç代ç ä¸å¯ä»¥å
å«**注éä¿¡æ¯**ï¼å
·ä½å°±æ¯çæ表æå段çå¤æ³¨ä¿¡æ¯ã
ãã使ç¨è¿ä¸ªå
ç´ å°±è½å¾ç®åçå®ç°æ们æ³è¦çåè½ãè¿éå
ä»ç»è¯¥å
ç´ ï¼ä»ç»å®åä¼ä¸¾ä¾å¦ä½æ©å±å®ç°è¯¥åè½ã
ãã该å
ç´ æä¸ä¸ªå¯éå±æ§type,å¯ä»¥æå®ç¨æ·çå®ç°ç±»ï¼è¯¥ç±»éè¦å®ç°org.mybatis.generator.api.CommentGeneratoræ¥å£ãèä¸å¿
æä¸ä¸ªé»è®¤çæé æ¹æ³ãè¿ä¸ªå±æ§æ¥æ¶é»è®¤çç¹æ®å¼DEFAULTï¼ä¼ä½¿ç¨é»è®¤çå®ç°ç±»org.mybatis.generator.internal.DefaultCommentGeneratorã
ããé»è®¤çå®ç°ç±»ä¸æä¾äºä¸¤ä¸ªå¯éå±æ§ï¼éè¦éè¿<property>å±æ§è¿è¡é
ç½®ã
ããsuppressAllComments:**é»æ¢**çæ注éï¼é»è®¤ä¸ºfalse
ããsuppressDate:**é»æ¢**çæç注éå
å«æ¶é´æ³ï¼é»è®¤ä¸ºfalse
ããä¸è¬æ
åµä¸ç±äºMBGçæç注éä¿¡æ¯æ²¡æä»»ä½ä»·å¼ï¼èä¸ææ¶é´æ³çæ
åµä¸æ¯æ¬¡çæç注éé½ä¸ä¸æ ·ï¼ä½¿ç¨**çæ¬æ§å¶**çæ¶åæ¯æ¬¡é½ä¼æ交ï¼å èä¸è¬æ
åµä¸æ们é½ä¼å±è½æ³¨éä¿¡æ¯ï¼å¯ä»¥å¦ä¸é
ç½®ï¼
ãã<commentGenerator>
ãã<property name="suppressAllComments" value="true"/>
ãã<property name="suppressDate" value="true"/>
ãã</commentGenerator>
ããæ¥ä¸æ¥æ们ç®å举ä¾å®ç°çæå
å«è¡¨å段注éä¿¡æ¯ç注é
ããå 为系ç»æä¾äºä¸ä¸ªé»è®¤çå®ç°ç±»ï¼æ以对æ们æ¥è¯´ï¼èªå·±å®ç°ä¸ä¸ªä¼å¾å®¹æï¼æç®åçæ¹æ³å°±æ¯å¤å¶é»è®¤å®ç°ç±»ä»£ç å°ä¸ä¸ªæ°çæ件ä¸ï¼ä¿®æ¹ç±»åå¦MyCommentGeneratorï¼å¨ä½ èªå·±çå®ç°ç±»ä¸ï¼ä½ å¯ä»¥éæ©æ¯å¦ç»§ç»æ¯æä¸é¢ç两个å±æ§ï¼ä½ è¿å¯ä»¥å¢å 对å
¶ä»å±æ§çæ¯æã
ããæ们éè¿ä¸é¢ä¸ä¸ªæ¹æ³çä¿®æ¹æ¥äºè§£ï¼å
¶ä»å 个æ¹æ³è¯·èªè¡ä¿®æ¹(åæ¬ç« çæ¶åæä¹æ²¡æå®å
¨å®ç°è¯¥ç±»ï¼æ以ä¸æä¾å®æ´æºç äº):
ãã@Override
ããpublic void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
ããif (introspectedColumn.getRemarks() != null && !introspectedColumn.getRemarks().equals("")) {
ããfield.addJavaDocLine("/**");
ããfield.addJavaDocLine(" * " + introspectedColumn.getRemarks());
ããaddJavadocTag(field, false);
ããfield.addJavaDocLine(" */");
ãã}
ãã}
ããè¿ä¸ªæ¹æ³æ¯ç»å段添å 注éä¿¡æ¯çï¼å
¶ä¸IntrospectedColumnå
å«äºå段çå®æ´ä¿¡æ¯ï¼éè¿getRemarksæ¹æ³å¯ä»¥è·åå段ç注éä¿¡æ¯ãä¸é¢è¿ä¸ªæ¹æ³ä¿®æ¹èµ·æ¥è¿æ¯å¾å®¹æçãé¤äºå段ç注éå¤è¿æGetteråSetterï¼ä»¥åç±»ç注éãæ¤å¤è¿æçæXMLç注éï¼å¤§å®¶å¯ä»¥æ ¹æ®é»è®¤çå®ç°è¿è¡ä¿®æ¹ã
ããå®ææ们èªå·±çå®ç°ç±»åï¼æ们è¿éè¦åå¦ä¸é
ç½®ï¼
ãã<commentGenerator type="com.github.abel533.mybatis.generator.MyCommentGenerator"/>
ãã3.3.3 <jdbcConnection> å
ç´
ãã<jdbcConnection>ç¨äºæå®æ°æ®åºè¿æ¥ä¿¡æ¯ï¼è¯¥å
ç´ å¿
éï¼å¹¶ä¸åªè½æä¸ä¸ªã
ããé
置该å
ç´ åªéè¦æ³¨æå¦æJDBC驱å¨ä¸å¨**classpath**ä¸ï¼å°±éè¦éè¿<classPathEntry>å
ç´ å¼å
¥jarå
ï¼è¿é**æ¨è**å°jarå
æ¾å°**classpath**ä¸ã
ãã该å
ç´ æ两个å¿
éå±æ§:
ããdriverClass:访é®æ°æ®åºçJDBC驱å¨ç¨åºçå®å
¨éå®ç±»å
ããconnectionURL:访é®æ°æ®åºçJDBCè¿æ¥URL
ãã该å
ç´ è¿æ两个å¯éå±æ§:
ããuserId:访é®æ°æ®åºçç¨æ·ID
ããpassword:访é®æ°æ®åºçå¯ç
ããæ¤å¤è¯¥å
ç´ è¿å¯ä»¥æ¥åå¤ä¸ª<property>åå
ç´ ï¼è¿éé
ç½®ç<property>å±æ§é½ä¼æ·»å å°JDBC驱å¨çå±æ§ä¸ã
ããè¿ä¸ªå
ç´ é
置起æ¥æ容æï¼è¿é举个ç®åä¾åï¼
ãã<jdbcConnection driverClass="com.mysql.jdbc.Driver"
ããconnectionURL="jdbc:mysql://localhost:3306/test"
ããuserId="root"
ããpassword="">
ãã</jdbcConnection>
ãã3.3.4 <javaTypeResolver> å
ç´
ãã该å
ç´ æå¤å¯ä»¥é
ç½®ä¸ä¸ªã
ããè¿ä¸ªå
ç´ çé
ç½®ç¨æ¥æå®JDBCç±»ååJavaç±»åå¦ä½è½¬æ¢ã
ãã该å
ç´ æä¾äºä¸ä¸ªå¯éçå±æ§typeï¼å<commentGenerator>æ¯è¾ç±»åï¼æä¾äºé»è®¤çå®ç°DEFAULTï¼ä¸è¬æ
åµä¸ä½¿ç¨é»è®¤å³å¯ï¼éè¦ç¹æ®å¤ççæ
åµå¯ä»¥éè¿å
¶ä»å
ç´ é
ç½®æ¥è§£å³ï¼ä¸å»ºè®®ä¿®æ¹è¯¥å±æ§ã
ãã该å±æ§è¿æä¸ä¸ªå¯ä»¥é
ç½®ç<property>å
ç´ ã
ããå¯ä»¥é
ç½®çå±æ§ä¸ºforceBigDecimalsï¼è¯¥å±æ§å¯ä»¥æ§å¶æ¯å¦å¼ºå¶DECIMALåNUMERICç±»åçå段转æ¢ä¸ºJavaç±»åçjava.math.BigDecimal,é»è®¤å¼ä¸ºfalseï¼ä¸è¬ä¸éè¦é
ç½®ã
ããé»è®¤æ
åµä¸ç转æ¢è§å为ï¼
ããå¦æ精度>0æè
é¿åº¦>18ï¼å°±ä¼ä½¿ç¨java.math.BigDecimal
ããå¦æ精度=0并ä¸10<=é¿åº¦<=18ï¼å°±ä¼ä½¿ç¨java.lang.Long
ããå¦æ精度=0并ä¸5<=é¿åº¦<=9ï¼å°±ä¼ä½¿ç¨java.lang.Integer
ããå¦æ精度=0并ä¸é¿åº¦<5ï¼å°±ä¼ä½¿ç¨java.lang.Short
ããå¦æ设置为trueï¼é£ä¹ä¸å®ä¼ä½¿ç¨java.math.BigDecimalï¼é
置示ä¾å¦ä¸ï¼
ãã<javaTypeResolver >
ãã<property name="forceBigDecimals" value="true" />
ãã</javaTypeResolver>
ãã3.3.5 <javaModelGenerator> å
ç´
ãã该å
ç´ å¿
é¡»é
ç½®ä¸ä¸ªï¼å¹¶ä¸æå¤ä¸ä¸ªã
ãã该å
ç´ ç¨æ¥æ§å¶çæçå®ä½ç±»ï¼æ ¹æ®<context>ä¸é
ç½®çdefaultModelTypeï¼ä¸ä¸ªè¡¨å¯è½ä¼å¯¹åºçæå¤ä¸ªä¸åçå®ä½ç±»ãä¸ä¸ªè¡¨å¯¹åºå¤ä¸ªç±»å®é
ä¸å¹¶ä¸æ¹ä¾¿ï¼æ以åé¢ä¹æ¨è使ç¨flatï¼è¿ç§æ
åµä¸ä¸ä¸ªè¡¨å¯¹åºä¸ä¸ªå®ä½ç±»ã
ãã该å
ç´ åªæ两个å±æ§ï¼é½æ¯å¿
éçã
ããtargetPackage:çæå®ä½ç±»åæ¾çå
åï¼ä¸è¬å°±æ¯æ¾å¨è¯¥å
ä¸ãå®é
è¿ä¼åå°å
¶ä»é
ç½®çå½±å(<table>ä¸ä¼æå°)ã
ããtargetProject:æå®ç®æ 项ç®è·¯å¾ï¼ä½¿ç¨çæ¯æ件系ç»çç»å¯¹è·¯å¾ã
ãã该å
ç´ æ¯æ以ä¸å 个<property>åå
ç´ å±æ§ï¼
ããconstructorBased:该å±æ§åªå¯¹MyBatis3ææï¼å¦ætrueå°±ä¼ä½¿ç¨æé æ¹æ³å
¥åï¼å¦æfalseå°±ä¼ä½¿ç¨setteræ¹å¼ãé»è®¤ä¸ºfalseã
ããenableSubPackages:å¦ætrueï¼MBGä¼æ ¹æ®catalogåschemaæ¥çæåå
ãå¦æfalseå°±ä¼ç´æ¥ç¨targetPackageå±æ§ãé»è®¤ä¸ºfalseã
ããimmutable:该å±æ§ç¨æ¥é
ç½®å®ä½ç±»å±æ§æ¯å¦å¯åï¼å¦æ设置为trueï¼é£ä¹constructorBasedä¸ç®¡è®¾ç½®æä»ä¹ï¼é½ä¼ä½¿ç¨æé æ¹æ³å
¥åï¼å¹¶ä¸ä¸ä¼çæsetteræ¹æ³ãå¦æ为falseï¼å®ä½ç±»å±æ§å°±å¯ä»¥æ¹åãé»è®¤ä¸ºfalseã
ããrootClass:设置ææå®ä½ç±»çåºç±»ãå¦æ设置ï¼éè¦ä½¿ç¨ç±»çå
¨éå®å称ã并ä¸å¦æMBGè½å¤å è½½rootClassï¼é£ä¹MBGä¸ä¼è¦çåç¶ç±»ä¸å®å
¨å¹é
çå±æ§ãå¹é
è§åï¼
ããå±æ§åå®å
¨ç¸å
ããå±æ§ç±»åç¸å
ããå±æ§ægetteræ¹æ³
ããå±æ§æsetteræ¹æ³
ããtrimStrings:æ¯å¦å¯¹æ°æ®åºæ¥è¯¢ç»æè¿è¡trimæä½ï¼å¦æ设置为trueå°±ä¼çæ类似è¿æ ·public void setUsername(String username) {this.username = username == null ? null : username.trim();}çsetteræ¹æ³ãé»è®¤å¼ä¸ºfalseã
ããé
置示ä¾å¦ä¸ï¼
ãã<javaModelGenerator targetPackage="test.model" targetProject="E:\MyProject\src\main\java">
ãã<property name="enableSubPackages" value="true" />
ãã<property name="trimStrings" value="true" />
ãã</javaModelGenerator>
ãã3.3.6 <sqlMapGenerator> å
ç´
ãã该å
ç´ å¯éï¼æå¤é
ç½®ä¸ä¸ªãä½æ¯æå¦ä¸ä¸¤ç§å¿
éçç¹æ®æ
åµï¼
ããå¦ætargetRuntimeç®æ æ¯**iBATIS2**ï¼è¯¥å
ç´ å¿
é¡»é
ç½®ä¸ä¸ªã
ããå¦ætargetRuntimeç®æ æ¯**MyBatis3**ï¼åªæå½<javaClientGenerator>éè¦XMLæ¶ï¼è¯¥å
ç´ å¿
é¡»é
ç½®ä¸ä¸ªã å¦æ没æé
ç½®<javaClientGenerator>ï¼å使ç¨ä»¥ä¸çè§åï¼
ããå¦ææå®äºä¸ä¸ª<sqlMapGenerator>ï¼é£ä¹MBGå°åªçæXMLçSQLæ å°æ件åå®ä½ç±»ã
ããå¦æ没ææå®<sqlMapGenerator>ï¼é£ä¹MBGå°åªçæå®ä½ç±»ã
ãã该å
ç´ åªæ两个å±æ§ï¼ååé¢æè¿ç<javaModelGenerator>çå±æ§å«ä¹ä¸æ ·ï¼ï¼é½æ¯å¿
éçã
ããtargetPackage:çæå®ä½ç±»åæ¾çå
åï¼ä¸è¬å°±æ¯æ¾å¨è¯¥å
ä¸ãå®é
è¿ä¼åå°å
¶ä»é
ç½®çå½±å(<table>ä¸ä¼æå°)ã
ããtargetProject:æå®ç®æ 项ç®è·¯å¾ï¼ä½¿ç¨çæ¯æ件系ç»çç»å¯¹è·¯å¾ã
ãã该å
ç´ æ¯æ<property>åå
ç´ ï¼åªæä¸ä¸ªå¯ä»¥é
ç½®çå±æ§ï¼
ããenableSubPackages:å¦ætrueï¼MBGä¼æ ¹æ®catalogåschemaæ¥çæåå
ãå¦æfalseå°±ä¼ç´æ¥ç¨targetPackageå±æ§ãé»è®¤ä¸ºfalseã
ããé
置示ä¾ï¼
ãã<sqlMapGenerator targetPackage="test.xml" targetProject="E:\MyProject\src\main\resources">
ãã<property name="enableSubPackages" value="true" />
ãã</sqlMapGenerator>
ãã3.3.7 <javaClientGenerator> å
ç´
ãã该å
ç´ å¯éï¼æå¤é
ç½®ä¸ä¸ªã
ããå¦æä¸é
置该å
ç´ ï¼å°±ä¸ä¼çæMapperæ¥å£ã
ãã该å
ç´ æ3个å¿
éå±æ§ï¼
ããtype:该å±æ§ç¨äºéæ©ä¸ä¸ªé¢å®ä¹ç客æ·ç«¯ä»£ç ï¼å¯ä»¥ç解为Mapperæ¥å£ï¼çæå¨ï¼ç¨æ·å¯ä»¥èªå®ä¹å®ç°ï¼éè¦ç»§æ¿org.mybatis.generator.codegen.AbstractJavaClientGeneratorç±»ï¼å¿
éæä¸ä¸ªé»è®¤çæé æ¹æ³ã 该å±æ§æä¾äºä»¥ä¸é¢å®ç代ç çæå¨ï¼é¦å
æ ¹æ®<context>çtargetRuntimeåæä¸ç±»ï¼
ããMyBatis3:
ããANNOTATEDMAPPER:åºäºæ³¨è§£çMapperæ¥å£ï¼ä¸ä¼æ对åºçXMLæ å°æ件
ããMIXEDMAPPER:XMLå注解çæ··åå½¢å¼ï¼(ä¸é¢è¿ç§æ
åµä¸ç)SqlProvider注解æ¹æ³ä¼è¢«XMLæ¿ä»£ã
ããXMLMAPPER:ææçæ¹æ³é½å¨XMLä¸ï¼æ¥å£è°ç¨ä¾èµXMLæ件ã
ããMyBatis3Simple:
ããANNOTATEDMAPPER:åºäºæ³¨è§£çMapperæ¥å£ï¼ä¸ä¼æ对åºçXMLæ å°æ件
ããXMLMAPPER:ææçæ¹æ³é½å¨XMLä¸ï¼æ¥å£è°ç¨ä¾èµXMLæ件ã
ããIbatis2Java2æ**Ibatis2Java5**:
ããIBATIS:çæç对象符åiBATISçDAOæ¡æ¶ï¼ä¸å»ºè®®ä½¿ç¨ï¼ã
ããGENERIC-CI:çæç对象å°åªä¾èµäºSqlMapClientï¼éè¿æé æ¹æ³æ³¨å
¥ã
ããGENERIC-SI:çæç对象å°åªä¾èµäºSqlMapClientï¼éè¿setteræ¹æ³æ³¨å
¥ã
ããSPRING:çæç对象符åSpringçDAOæ¥å£
ããtargetPackage:çæå®ä½ç±»åæ¾çå
åï¼ä¸è¬å°±æ¯æ¾å¨è¯¥å
ä¸ãå®é
è¿ä¼åå°å
¶ä»é
ç½®çå½±å(<table>ä¸ä¼æå°)ã
ããtargetProject:æå®ç®æ 项ç®è·¯å¾ï¼ä½¿ç¨çæ¯æ件系ç»çç»å¯¹è·¯å¾ã
ãã该å
ç´ è¿æä¸ä¸ªå¯éå±æ§ï¼
ããimplementationPackage:å¦ææå®äºè¯¥å±æ§ï¼å®ç°ç±»å°±ä¼çæå¨è¿ä¸ªå
ä¸ã
ãã该å
ç´ æ¯æ<property>åå
ç´ è®¾ç½®çå±æ§ï¼
ããenableSubPackages
ããexampleMethodVisibility
ããmethodNameCalculator
ããrootInterface
ããuseLegacyBuilder
ããè¿å 个å±æ§ä¸å¤ªå¸¸ç¨ï¼å
·ä½ä½ç¨è¯·çå®æ´çææ¡£ï¼è¿é对rootInterfaceå个ç®åä»ç»ã
ããrootInterfaceç¨äºæå®ä¸ä¸ªææçæçæ¥å£é½ç»§æ¿çç¶æ¥å£ã è¿ä¸ªå¼å¯ä»¥éè¿<table>é
ç½®çrootInterfaceå±æ§è¦çã
ããè¿ä¸ªå±æ§å¯¹äºéç¨Mapperæ¥è¯´ï¼å¯ä»¥è®©çæçæææ¥å£é½ç»§æ¿è¯¥æ¥å£ã