亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

使用MyBatis-Generator自動(dòng)生成映射文件

2019-11-11 05:13:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

使用MyBatis-Generator自動(dòng)生成映射文件

生成的方式一共有三種

1、使用cmd命令方式生成。

首先在generator.xml中指定數(shù)據(jù)庫(kù)驅(qū)動(dòng)包位置,然后在mybatis-generator-core-1.3.1包下創(chuàng)建一個(gè)src文件夾(否則生成的文件沒(méi)地方放)

生產(chǎn)的Mapper.xml文件與domain類放在一個(gè)報(bào)下面(否則無(wú)法映射)

E:/>java -jar E:/mybatis-generator-core-1.3.1/lib/mybatis-generator-core-1.3.1.jar -configfile E:/mybatis-generator-core-1.3.1/generator.xml -overwrite

generator.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-generator-config_1_0.dtd"><generatorConfiguration> <!-- 數(shù)據(jù)庫(kù)驅(qū)動(dòng)位置 --> <classPathEntry location="E:/mybatis-generator-core-1.3.1/MySQL-connector-java-5.0.8-bin.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <PRoperty name="suppressAllComments" value="true" /> </commentGenerator> <!-- 數(shù)據(jù)庫(kù)的url、用戶名、密碼 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/dbo" userId="root" passWord="123456"> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 生成模型的包名和位置 --> <javaModelGenerator targetPackage="com.paywing.domain" targetProject="E:/mybatis-generator-core-1.3.1/src"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成的映射文件包名和位置 --> <sqlMapGenerator targetPackage="com.paywing.mapping" targetProject="E:/mybatis-generator-core-1.3.1/src"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 生成DAO的包名和位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.paywing.dao" targetProject="E:/mybatis-generator-core-1.3.1/src"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 生成那些表 tableName表名,domainObjectName應(yīng)于數(shù)據(jù)庫(kù)表的javaBean類名--> <table tableName="tb_bookinfo" domainObjectName="TB_BookInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> <table tableName="tb_booktype" domainObjectName="TB_Booktype" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" /> </context></generatorConfiguration>

2、使用maven方式生成(這種方式在各個(gè)工具下都能使用,推薦使用這種方式)。

generator.properties

#工程src路徑 這里如果是maven啟動(dòng)的話去掉mybatis/ project=mybatis/src/main/java #工程存放mapper.xml路徑 這里如果是maven啟動(dòng)的話去掉mybatis/ resource=mybatis/src/main/resourcespackage_domain=com.practice.mybatis.entitypackage_mapper=mappers.testpackage_dao=com.practice.mybatis.daopackage_service=com.practice.mybatis.service #/u6307/u5B9A/u6570/u636E/u8FDE/u63A5/u9A71/u52A8jar/u5730/u5740 classPath=D:/maven_lib/mysql/mysql-connector-java/5.1.30/mysql-connector-java-5.1.30.jar jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8jdbc.user=rootjdbc.password=123456

generatorConfig.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-generator-config_1_0.dtd"><generatorConfiguration> <!-- 引入配置文件 --> <properties resource="generator.properties"/> <!-- 數(shù)據(jù)庫(kù)驅(qū)動(dòng)位置 --> <classPathEntry location="${classPath}" /> <!-- 一個(gè)數(shù)據(jù)庫(kù)一個(gè)context, targetRuntime:此屬性用于指定生成的代碼的運(yùn)行時(shí)環(huán)境 ,MyBatis3:*這是默認(rèn)值*,MyBatis3Simple不生成Example查詢(避免后面一個(gè)一個(gè)表設(shè)置) defaultModelType:如何生成實(shí)體類,flat表示為每一張表生成一個(gè)實(shí)體類,推薦使用--> <context id="mysqlTables" targetRuntime="com.practice.mybatis.TkMyBatis3Impl" defaultModelType="flat"> <!-- 注釋 type表示自定義注釋--> <commentGenerator type="com.practice.mybatis.MyCommentGenerator"> <!-- 生成文件的編碼 (eclipse插件的時(shí)候這里并沒(méi)有什么卵用,需要在eclipse根目錄的eclipse.ini最后添加 -Dfile.encoding=UTF-8 )--> <property name="javaFileEncoding" value="UTF-8"/> <!-- 是否取消注釋 --> <property name="suppressAllComments" value="false" /> <property name="addRemarkComments" value="true"/> <!-- 是否生成注釋代時(shí)間戳 --> <property name="suppressDate" value="true" /> <!-- 當(dāng)表名或者字段名為SQL關(guān)鍵字的時(shí)候,可以設(shè)置該屬性為true,MBG會(huì)自動(dòng)給表名或字段名添加**分隔符** --> <property name="autoDelimitKeywords" value="true"></property> <!-- 由于beginningDelimiter和endingDelimiter的默認(rèn)值為雙引號(hào)("),在Mysql中不能這么寫,所以還要將這兩個(gè)默認(rèn)值改為**反單引號(hào)(`)** --> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> </commentGenerator> <!-- 數(shù)據(jù)庫(kù)的url、用戶名、密碼 --> <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.user}" password="${jdbc.password}"> </jdbcConnection> <!-- 類型轉(zhuǎn)換 --> <javaTypeResolver > <!-- 是否使用bigDecimal, false可自動(dòng)轉(zhuǎn)化以下類型(Long, Integer, Short, etc.) --> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 生成模型的包名和位置 --> <javaModelGenerator targetPackage="${package_domain}" targetProject="${project}"> <!-- 是否在當(dāng)前路徑下新加一層schema,eg:fase路徑com.goshop.domain", true:com.goshop.domain".[schemaName] --> <property name="enableSubPackages" value="false" /> <!-- 是否針對(duì)string類型的字段在set的時(shí)候進(jìn)行trim調(diào)用 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成的映射文件包名和位置 --> <sqlMapGenerator targetPackage="${package_mapper}" targetProject="${resource}"> <!-- 是否在當(dāng)前路徑下新加一層schema,eg:fase路徑com.goshop.domain", true:com.goshop.domain".[schemaName] --> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 生成DAO的包名和位置 type 1、ANNOTATEDMAPPER注解形式 2、XMLMAPPER xml配置文件形式--> <javaClientGenerator type="XMLMAPPER" targetPackage="${package_dao}" targetProject="${project}"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 生成那些表 tableName表名 mapperName 生成dao的名稱,domainObjectName應(yīng)于數(shù)據(jù)庫(kù)表的javaBean類名,enable*ByExample是否生成 example類 --> <!-- <table tableName="sys_user" domainObjectName="SysUser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> --> <!-- 忽略列,不生成bean 字段 <ignoreColumn column="FRED" />--> <!-- 指定列的java數(shù)據(jù)類型 <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />--> <table tableName="%" mapperName="{0}DAO"> <columnOverride column="remarks" jdbcType="VARCHAR" /> </table></context></generatorConfiguration>

注意:這里由于需要自定義中文注釋,因此需要修改源碼,這里附上修改后的代碼。

MyCommentGenerator.java

這個(gè)文件是關(guān)于注釋的部分,只需要實(shí)現(xiàn)CommentGenerator接口就可以。

/** * Copyright 2006-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.practice.mybatis;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Properties;import org.mybatis.generator.api.CommentGenerator;import org.mybatis.generator.api.IntrospectedColumn;import org.mybatis.generator.api.IntrospectedTable;import org.mybatis.generator.api.dom.java.CompilationUnit;import org.mybatis.generator.api.dom.java.Field;import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;import org.mybatis.generator.api.dom.java.InnerClass;import org.mybatis.generator.api.dom.java.InnerEnum;import org.mybatis.generator.api.dom.java.JavaElement;import org.mybatis.generator.api.dom.java.Method;import org.mybatis.generator.api.dom.java.Parameter;import org.mybatis.generator.api.dom.java.TopLevelClass;import org.mybatis.generator.api.dom.xml.TextElement;import org.mybatis.generator.api.dom.xml.XmlElement;import org.mybatis.generator.config.MergeConstants;import org.mybatis.generator.config.PropertyRegistry;import org.mybatis.generator.internal.util.StringUtility;/** * 修改Mybatis Generator 生成的所有注釋的文檔 * * @author wl */public class MyCommentGenerator implements CommentGenerator { /** The properties. */ private Properties properties; /** The suppress date. */ private boolean suppressDate; /** The suppress all comments. */ private boolean suppressAllComments; /** The addition of table remark's comments. * If suppressAllComments is true, this option is ignored*/ private boolean addRemarkComments; private SimpleDateFormat dateFormat; /** * Instantiates a new default comment generator. */ public MyCommentGenerator() { super(); properties = new Properties(); suppressDate = false; suppressAllComments = false; addRemarkComments = false; } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addJavaFileComment(org.mybatis.generator.api.dom.java.CompilationUnit) */ public void addJavaFileComment(final CompilationUnit compilationUnit) { // add no file level comments by default } /** * Adds a suitable comment to warn users that the element was generated, and when it was generated. * * @param xmlElement * the xml element */ public void addComment(final XmlElement xmlElement) { if (suppressAllComments) { return; } xmlElement.addElement(new TextElement("<!--")); //$NON-NLS-1$ final StringBuilder sb = new StringBuilder();// sb.append(" WARNING - "); //$NON-NLS-1$ sb.append(MergeConstants.NEW_ELEMENT_TAG); xmlElement.addElement(new TextElement(sb.toString()));// xmlElement// .addElement(new TextElement(// " This element is automatically generated by MyBatis Generator, do not modify.")); //$NON-NLS-1$//// final String s = getDateString();// if (s != null) {// sb.setLength(0);// sb.append(" This element was generated on "); //$NON-NLS-1$// sb.append(s);// sb.append('.');// xmlElement.addElement(new TextElement(sb.toString()));// } xmlElement.addElement(new TextElement("-->")); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addRootComment(org.mybatis.generator.api.dom.xml.XmlElement) */ public void addRootComment(final XmlElement rootElement) { // add no document level comments by default } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addConfigurationProperties(java.util.Properties) */ public void addConfigurationProperties(final Properties properties) { this.properties.putAll(properties); suppressDate = isTrue(properties .getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE)); suppressAllComments = isTrue(properties .getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS)); addRemarkComments = isTrue(properties .getProperty(PropertyRegistry.COMMENT_GENERATOR_ADD_REMARK_COMMENTS)); final String dateFormatString = properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_DATE_FORMAT); if (StringUtility.stringHasValue(dateFormatString)) { dateFormat = new SimpleDateFormat(dateFormatString); } } public static boolean isTrue(String s) { return "true".equalsIgnoreCase(s); //$NON-NLS-1$ } /** * This method adds the custom javadoc tag for. You may do nothing if you do not wish to include the Javadoc tag - * however, if you do not include the Javadoc tag then the Java merge capability of the eclipse plugin will break. * * @param javaElement * the java element * @param markAsDoNotDelete * the mark as do not delete */ protected void addJavadocTag(final JavaElement javaElement, final boolean markAsDoNotDelete) { javaElement.addJavaDocLine(" *"); //$NON-NLS-1$ final StringBuilder sb = new StringBuilder(); sb.append(" * "); //$NON-NLS-1$ sb.append(MergeConstants.NEW_ELEMENT_TAG); if (markAsDoNotDelete) { sb.append(" do_not_delete_during_merge"); //$NON-NLS-1$ } final String s = getDateString(); if (s != null) { sb.append(' '); sb.append(s); } javaElement.addJavaDocLine(sb.toString()); } /** * This method returns a formated date string to include in the Javadoc tag * and XML comments. You may return null if you do not want the date in * these documentation elements. * * @return a string representing the current timestamp, or null */ protected String getDateString() { if (suppressDate) { return null; } else if (dateFormat != null) { return dateFormat.format(new Date()); } else { return new Date().toString(); } } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addClassComment(org.mybatis.generator.api.dom.java.InnerClass, org.mybatis.generator.api.IntrospectedTable) */ public void addClassComment(final InnerClass innerClass, final IntrospectedTable introspectedTable) { if (suppressAllComments) { return; } final StringBuilder sb = new StringBuilder(); innerClass.addJavaDocLine("/**"); //$NON-NLS-1$ innerClass .addJavaDocLine(" * This class was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * This class corresponds to the database table "); //$NON-NLS-1$ sb.append(introspectedTable.getFullyQualifiedTable()); innerClass.addJavaDocLine(sb.toString()); addJavadocTag(innerClass, false); innerClass.addJavaDocLine(" */"); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addTopLevelClassComment(org.mybatis.generator.api.dom.java.TopLevelClass, org.mybatis.generator.api.IntrospectedTable) */ public void addModelClassComment(final TopLevelClass topLevelClass, final IntrospectedTable introspectedTable) { if (suppressAllComments || !addRemarkComments) { return; } final StringBuilder sb = new StringBuilder(); topLevelClass.addJavaDocLine("/**"); //$NON-NLS-1$ final String remarks = introspectedTable.getRemarks(); if (addRemarkComments && StringUtility.stringHasValue(remarks)) { topLevelClass.addJavaDocLine(" * Database Table Remarks:"); final String[] remarkLines = remarks.split(System.getProperty("line.separator")); //$NON-NLS-1$ for (String remarkLine : remarkLines) { topLevelClass.addJavaDocLine(" * " + remarkLine); //$NON-NLS-1$ } }// topLevelClass.addJavaDocLine(" *"); //$NON-NLS-1$// topLevelClass// .addJavaDocLine(" * This class was generated by MyBatis Generator."); //$NON-NLS-1$// sb.append(" * This class corresponds to the database table "); //$NON-NLS-1$ sb.append(" * 對(duì)應(yīng)于數(shù)據(jù)庫(kù)表 "); //$NON-NLS-1$ sb.append(introspectedTable.getFullyQualifiedTable()); topLevelClass.addJavaDocLine(sb.toString()); addJavadocTag(topLevelClass, true); topLevelClass.addJavaDocLine(" */"); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addEnumComment(org.mybatis.generator.api.dom.java.InnerEnum, org.mybatis.generator.api.IntrospectedTable) */ public void addEnumComment(final InnerEnum innerEnum, final IntrospectedTable introspectedTable) { if (suppressAllComments) { return; }// StringBuilder sb = new StringBuilder(); innerEnum.addJavaDocLine("/**"); //$NON-NLS-1$// innerEnum// .addJavaDocLine(" * This enum was generated by MyBatis Generator."); //$NON-NLS-1$//// sb.append(" * This enum corresponds to the database table "); //$NON-NLS-1$// sb.append(introspectedTable.getFullyQualifiedTable());// innerEnum.addJavaDocLine(sb.toString()); addJavadocTag(innerEnum, false); innerEnum.addJavaDocLine(" */"); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addFieldComment(org.mybatis.generator.api.dom.java.Field, org.mybatis.generator.api.IntrospectedTable, org.mybatis.generator.api.IntrospectedColumn) */ public void addFieldComment(final Field field, final IntrospectedTable introspectedTable, final IntrospectedColumn introspectedColumn) { if (suppressAllComments) { return; } field.addJavaDocLine("/**"); //$NON-NLS-1$ String remarks = introspectedColumn.getRemarks(); if (addRemarkComments && StringUtility.stringHasValue(remarks)) { field.addJavaDocLine(" * Database Column Remarks:"); final String[] remarkLines = remarks.split(System.getProperty("line.separator")); //$NON-NLS-1$ for (String remarkLine : remarkLines) { field.addJavaDocLine(" * " + remarkLine); //$NON-NLS-1$ } }// field.addJavaDocLine(" *"); //$NON-NLS-1$ StringBuilder sb = new StringBuilder(); sb.append(" * "+introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); sb.append(introspectedColumn.getRemarks()==null ? " " : " "+introspectedColumn.getRemarks()); field.addJavaDocLine(sb.toString()); addJavadocTag(field, false); field.addJavaDocLine(" */"); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addFieldComment(org.mybatis.generator.api.dom.java.Field, org.mybatis.generator.api.IntrospectedTable) */ public void addFieldComment(final Field field, final IntrospectedTable introspectedTable) { if (suppressAllComments) { return; } final StringBuilder sb = new StringBuilder(); field.addJavaDocLine("/**"); //$NON-NLS-1$ field .addJavaDocLine(" * This field was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * This field corresponds to the database table "); //$NON-NLS-1$ sb.append(introspectedTable.getFullyQualifiedTable()); field.addJavaDocLine(sb.toString()); addJavadocTag(field, false); field.addJavaDocLine(" */"); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addGeneralMethodComment(org.mybatis.generator.api.dom.java.Method, org.mybatis.generator.api.IntrospectedTable) */ public void addGeneralMethodComment(final Method method, final IntrospectedTable introspectedTable) { if (suppressAllComments) { return; } StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$// method// .addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$//// sb.append(" * This method corresponds to the database table "); //$NON-NLS-1$// sb.append(introspectedTable.getFullyQualifiedTable()); List<Parameter> parameters = method.getParameters(); for (Parameter parameter : parameters) { sb.append(" *@param "); sb.append(parameter.getName()); sb.append("."); method.addJavaDocLine(sb.toString()); sb.delete(0, sb.length()); } method.addJavaDocLine(method.getReturnType().getShortName()==null ? "" :" *@return "+method.getReturnType().getShortName()+"."); addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addGetterComment(org.mybatis.generator.api.dom.java.Method, org.mybatis.generator.api.IntrospectedTable, org.mybatis.generator.api.IntrospectedColumn) */ public void addGetterComment(final Method method, final IntrospectedTable introspectedTable, final IntrospectedColumn introspectedColumn) { if (suppressAllComments) { return; } StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$// method// .addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$//// sb.append(" * This method returns the value of the database column "); //$NON-NLS-1$// sb.append(introspectedTable.getFullyQualifiedTable());// sb.append('.');// sb.append(introspectedColumn.getActualColumnName());// method.addJavaDocLine(sb.toString());//// method.addJavaDocLine(" *"); //$NON-NLS-1$//// sb.setLength(0);// sb.append(" * @return the value of "); //$NON-NLS-1$// sb.append(introspectedTable.getFullyQualifiedTable());// sb.append('.');// sb.append(introspectedColumn.getActualColumnName()); sb.append(" * @return "+( introspectedColumn.getActualColumnName()==null ? "":introspectedColumn.getActualColumnName())); sb.append(" ."); method.addJavaDocLine(sb.toString()); addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addSetterComment(org.mybatis.generator.api.dom.java.Method, org.mybatis.generator.api.IntrospectedTable, org.mybatis.generator.api.IntrospectedColumn) */ public void addSetterComment(final Method method, final IntrospectedTable introspectedTable, final IntrospectedColumn introspectedColumn) { if (suppressAllComments) { return; } StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$// method// .addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$//// sb.append(" * This method sets the value of the database column "); //$NON-NLS-1$// sb.append(introspectedTable.getFullyQualifiedTable());// sb.append('.');// sb.append(introspectedColumn.getActualColumnName());// method.addJavaDocLine(sb.toString());//// method.addJavaDocLine(" *"); //$NON-NLS-1$// Parameter parm = method.getParameters().get(0); sb.setLength(0); sb.append(" * @param "); //$NON-NLS-1$ sb.append(parm.getName()); sb.append((introspectedColumn.getRemarks()==null ? " " : " "+introspectedColumn.getRemarks())); sb.append(".");// sb.append(" the value for "); //$NON-NLS-1$// sb.append(introspectedTable.getFullyQualifiedTable());// sb.append('.');// sb.append(introspectedColumn.getActualColumnName()); method.addJavaDocLine(sb.toString()); addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.mybatis.generator.api.CommentGenerator#addClassComment(org.mybatis.generator.api.dom.java.InnerClass, org.mybatis.generator.api.IntrospectedTable, boolean) */ public void addClassComment(final InnerClass innerClass, final IntrospectedTable introspectedTable, final boolean markAsDoNotDelete) { if (suppressAllComments) { return; } final StringBuilder sb = new StringBuilder(); innerClass.addJavaDocLine("/**"); //$NON-NLS-1$ innerClass .addJavaDocLine(" * This class was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * This class corresponds to the database table "); //$NON-NLS-1$ sb.append(introspectedTable.getFullyQualifiedTable()); innerClass.addJavaDocLine(sb.toString()); addJavadocTag(innerClass, markAsDoNotDelete); innerClass.addJavaDocLine(" */"); //$NON-NLS-1$ }}

 1.3.4 版本以后,MBG 在元素上提供了一個(gè)mapperName 的屬性,可以設(shè)置生成的 Mapper 名字。

但是因?yàn)?nbsp;tableName 屬性支持通配符 %,在這種情況下就不能使用mapperName屬性設(shè)置了。為了解決這種情況,提供了一個(gè)插件可以用于通配符情況下的配置。

package com.practice.mybatis;import java.text.MessageFormat;import org.mybatis.generator.codegen.mybatis3.IntrospectedTableMyBatis3SimpleImpl;/** * @author Win7 *生成DAO后綴 */public class TkMyBatis3Impl extends IntrospectedTableMyBatis3SimpleImpl { @Override protected String calculateMyBatis3XmlMapperFileName() { final StringBuilder sb = new StringBuilder(); if (stringHasValue(tableConfiguration.getMapperName())) { String mapperName = tableConfiguration.getMapperName(); final int ind = mapperName.lastIndexOf('.'); if (ind != -1) { mapperName = mapperName.substring(ind + 1); } //支持mapperName = "{0}Dao" 等用法 sb.append(MessageFormat.format(mapperName, fullyQualifiedTable.getDomainObjectName())); sb.append(".xml"); //$NON-NLS-1$ } else { sb.append(fullyQualifiedTable.getDomainObjectName()); sb.append("Mapper.xml"); //$NON-NLS-1$ } return sb.toString(); } public static boolean stringHasValue(final String s) { return s != null && s.length() > 0; } @Override protected void calculateJavaClientAttributes() { if (context.getJavaClientGeneratorConfiguration() == null) { return; } final StringBuilder sb = new StringBuilder(); sb.append(calculateJavaClientImplementationPackage()); sb.append('.'); sb.append(fullyQualifiedTable.getDomainObjectName()); sb.append("DAOImpl"); //$NON-NLS-1$ setDAOImplementationType(sb.toString()); sb.setLength(0); sb.append(calculateJavaClientInterfacePackage()); sb.append('.'); sb.append(fullyQualifiedTable.getDomainObjectName()); sb.append("DAO"); //$NON-NLS-1$ setDAOInterfaceType(sb.toString()); sb.setLength(0); sb.append(calculateJavaClientInterfacePackage()); sb.append('.'); if (stringHasValue(tableConfiguration.getMapperName())) { //支持mapperName = "{0}Dao" 等用法 sb.append(MessageFormat.format(tableConfiguration.getMapperName(), fullyQualifiedTable.getDomainObjectName())); } else { sb.append(fullyQualifiedTable.getDomainObjectName()); sb.append("Mapper"); //$NON-NLS-1$ } setMyBatis3JavaMapperType(sb.toString()); sb.setLength(0); sb.append(calculateJavaClientInterfacePackage()); sb.append('.'); if (stringHasValue(tableConfiguration.getSqlProviderName())) { //支持mapperName = "{0}SqlProvider" 等用法 sb.append(MessageFormat.format(tableConfiguration.getSqlProviderName(), fullyQualifiedTable.getDomainObjectName())); } else { sb.append(fullyQualifiedTable.getDomainObjectName()); sb.append("SqlProvider"); //$NON-NLS-1$ } setMyBatis3SqlProviderType(sb.toString()); }}

以上是所有的配置,下面設(shè)置maven啟動(dòng)

IDEA下(wl.jar是需要添加中文注釋所修改的源碼后打的jar)

pom.xml

<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency> <dependency> <groupId>mygenerator</groupId> <artifactId>com.mybatis.generator.wl</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/com.mybatis.generator.wl.jar</systemPath> </dependency> </dependencies> <configuration> <!--配置文件的路徑--> <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile> <!--允許移動(dòng)生成的文件--> <verbose>true</verbose> <!--允許覆蓋生成的文件--> <overwrite>true</overwrite> </configuration> </plugin>

maven配置

Command line:

mybatis-generator:generate

eclipse下

pom.xml配置同上

Goals

mybatis-generator:generate

注意:maven方式啟動(dòng)的話,上面geterator.properties里的project與resource 需要去掉項(xiàng)目名稱。

generatorConfig.xml里面targetRuntime與自定義注釋的java文件配置的是修改完源碼導(dǎo)入到項(xiàng)目中jar的路徑。

3、如果開(kāi)發(fā)工具為eclipse,可以安裝Generator的插件,然后生成generatorConfig.xml進(jìn)行修改配置。

最后通過(guò)右鍵就可以運(yùn)行。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
天堂电影一区| 午夜在线观看av| 99九九久久| 午夜精品一区二区在线观看| 首页亚洲中字| 一区二区三区免费| 成人网址大全| 九九九九九国产| www国产在线观看| 手机在线观看免费av| 久久久精品一区二区涩爱| 亚洲人成电影网站色…| a级毛片免费高清视频| 亚洲男人在线天堂| 成人国产精选| 欧美精品在线视频| 亚洲欧美综合一区二区| 欧美18—19性高清hd4k| 国产福利小视频| 日韩一区二区三区高清免费看看| 97精品国产综合久久久动漫日韩| 欧美在线亚洲一区| 亚洲精品无码专区在线播放| 日韩精品水蜜桃| 欧美日韩精品一区二区在线播放| 欧美极品少妇xxxxⅹ喷水| 欧美日韩一区二区欧美激情| 色妞在线综合亚洲欧美| 亚洲视频在线一区观看| 欧美三级电影一区二区三区| 免费黄色福利视频| 中文字幕人妻一区二区三区视频| 欧美在线极品| 久久的色偷偷| 182在线视频观看| 狠狠色成人综合网图片区| 91国拍精品国产粉嫩亚洲一区| 亚洲十八**毛片| www.91popny.com| 日韩av成人高清| 在线视频在线视频7m国产| 亚洲国产精品第一区二区三区| 日韩精品在线视频免费观看| 五月婷婷丁香综合网| 91视频在线网站| 蜜桃久久精品成人无码av| 天天干天天摸天天操| 亚洲a∨一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 99久久国产综合精品色伊| 中文字幕在线影视资源| 欧美一二三区在线| 国产精品无码无卡无需播放器| 蜜桃视频污在线观看| 国产精品毛片a∨一区二区三区| 悠悠资源网亚洲青| 欧美区国产区| 黑人巨大精品欧美| 自拍偷拍亚洲一区| 精品亚洲一区二区三区在线播放| 黄色的网站在线观看| 亚洲熟妇无码久久精品| 97视频在线免费播放| 国产日韩欧美综合在线| 欧美激情视频一区二区三区| 日本少妇久久久| 91在线视频国产| 国产美女在线精品免费观看| 久久久久国产精品区片区无码| 欧美日本在线观看| 中文字幕人成乱码在线观看| 巨大荫蒂视频欧美另类大| 波多野结衣毛片| 婷婷丁香一区二区三区| 欧美多人乱p欧美4p久久| 色欲av伊人久久大香线蕉影院| 日韩激情图片| 国产精品对白久久久久粗| 91传媒在线观看| 久做在线视频免费观看| 青青草国产免费一区二区下载| 久久精品视频16| 亚洲理论电影片| 看av免费毛片手机播放| 精品亚洲一区二区| 老鸭窝91久久精品色噜噜导演| 欧美日韩成人免费| 日本中文字幕视频在线| 国产视频2区| 欧美国产精品日韩| 视频在线99| 中文字幕日韩一区二区不卡| 亚洲成人黄色网址| www.亚洲色图.com| 欧美人与动性xxxxx杂性| 成人妇女淫片aaaa视频| 丁香婷婷在线| 欧美日韩破处| 在线播放av中文字幕| 日本a√在线观看| 久久嫩草精品久久久精品一| 日韩激情视频网站| 都市激情亚洲| 91大神影片| 久久99久久99精品蜜柚传媒| 国产男女裸体做爰爽爽| 国产私拍精品| 欧美精品久久一区| 老司机av在线免费看| 精品视频免费在线| 国产高清视频在线播放| 超碰av女优在线| 欧美三级日韩三级| 成人全视频在线观看在线播放高清| 中文字幕人成高视频| 免费一级片在线观看| 日本在线观看| 18深夜在线观看免费视频| 91精品国产高久久久久久五月天| 2023亚洲男人天堂| 中文字幕精品三区| 欧美激情区在线播放| 97电影在线看视频| 国产一区高清| 国产婷婷色一区二区三区在线| 亚洲男同1069视频| 亚洲国产精品久久久久婷蜜芽| 欧美久久精品一级黑人c片| 国产精品一区专区| 99久久精品国产一区二区三区| 欧美日本韩国一区二区| 粉嫩av国产一区二区三区| 免费看亚洲片| 欧美xo影院| 午夜精品在线看| 99在线影院| 天天操精品视频| 日韩精品第一| 亚洲男人的天堂网站| 日本中文字幕一区二区| 免费观看国产视频| 影音先锋国产精品| 99re在线视频这里只有精品| 日韩激情在线观看| 影音先锋在线中文| 亚洲专区第一页| 91嫩草免费看| 日本亚洲一区| 国产视频福利一区| 久久久久.com| 动漫视频在线一区| 99福利在线观看| 中文字幕在线看人| 狠久久av成人天堂| 精品美女www爽爽爽视频| 久久精品视频免费看| 麻豆国产尤物av尤物在线观看| 国产99午夜精品一区二区三区| 成人av电影免费观看| 一道精品一区二区三区| 国产成人av毛片| 免费在线看黄色| 国产大陆精品国产| 亚洲丝袜自拍清纯另类| 国产精品久久久久久久久| 东京热一区二区三区四区| 国模吧视频一区| 潘金莲一级淫片aaaaaa播放1| 日本高清无吗v一区| 精品久久久久久中文字幕大豆网| 91精品视频专区| 性色av一区二区三区红粉影视| 国产亚洲欧洲997久久综合| a视频网址在线观看| 国产黄色激情视频| 中文字幕18页| 日本天堂在线观看| 91超碰这里只有精品国产| 午夜成年女人毛片免费观看| av日韩久久| 蜜臀精品一区二区三区| 丁香六月激情婷婷| 久久精品国产68国产精品亚洲| 色噜噜日韩精品欧美一区二区| 老牛影视av牛牛影视av| 久久国产精品网站| 久久综合精品国产一区二区三区| 91精品婷婷国产综合久久蝌蚪| 992tv成人免费观看| 日本一区高清不卡| 第一福利在线视频| 国产精品夜色7777狼人| 天堂中文在线视频| av电影在线观看一区二区三区| 国精品**一区二区三区在线蜜桃| 国产精品久久久久国产a级| 天堂а√在线中文在线新版| 国产又猛又黄的视频| 欧美在线免费视屏| 成人激情视频网站| 国产性生交xxxxx免费| 又嫩又硬又黄又爽的视频| 国产在线三区| 青娱乐国产在线| 日韩在线综合网| 性感美女久久精品| 97久久夜色精品国产| 国产伦精品一区二区三区四区视频_| 6080亚洲精品一区二区| 日本久久久a级免费| 在线免费观看黄色网址| 国产精品免费aⅴ片在线观看| 亚洲中文字幕无码爆乳av| 欧美丝袜丝交足nylons172| 91在线播放国产| 亚洲精品乱码久久久久久9色| 色天使色偷偷av一区二区| 亚洲成人第一| 久久久综合网| 亚洲一区二区三区国产| 日韩视频专区| 瑟瑟视频在线| 欧美第一黄网| 欧美精品激情视频| 无码一区二区三区视频| 成人性生交大片免费看午夜| 精品亚洲一区二区三区四区五区| 国产精品成人3p一区二区三区| 丝瓜app色版网站观看| 美女被男人操网站| 美女主播视频一区| 国产a免费视频| 日韩美香港a一级毛片| 国产精品免费久久久久| av在线日韩国产精品| 欧美一区深夜视频| 欧美巨大另类极品videosbest| 国产日产欧美一区二区视频| 人成免费电影一二三区在线观看| 欧美一区二区三区成人| 一区二区三区亚洲变态调教大结局| 一本色道久久88综合日韩精品| 女人18毛片九区毛片在线| 国产在线高清| 精品婷婷色一区二区三区蜜桃| 少妇一级黄色片| 亚洲视频在线一区二区| 99久在线精品99re8热| 97在线精品视频| 国产精品2023| 日日草天天草| 色中文字幕在线观看| 99国产盗摄| 亚洲精品3区| 亚洲成人网上| 最近2019免费中文字幕视频三| 亚洲天堂男人的天堂| 成人影视亚洲图片在线| 国产精品视频自在线| 四季av日韩精品一区| 欧美激情在线播放| 精品久久久久国产| 久久亚洲精品中文字幕| 午夜影视一区二区三区| 色片在线免费观看| 国产精品美女主播在线观看纯欲| 国产精品20p| 污视频在线免费观看网站| 91免费版在线看| www成人在线| 亚洲一区不卡在线| 在线观看免费黄网站| 日韩制服诱惑| 国产一区日韩欧美| 欧美在线不卡一区| 日本高清不卡三区| 亚洲欧美综合一区| 日韩一区精品字幕| 亚洲一区二区福利| 精品人妻一区二区三区日产乱码| 国产女人高潮时对白| 成人av影院在线观看| 3d玉蒲团在线观看| 国产美女精品久久久| 人妻熟人中文字幕一区二区| 亚洲成人精品在线播放| 一个人看的日本www的免费视频| 国产在线一区二区三区四区| 91九色国产视频| 欧美性另类69xxxx| 国产手机视频在线观看| 加勒比成人在线| 欧美另类交视频| 成 人 免费 黄 色| 亚洲精品免费一区亚洲精品免费精品一区| 日本中文在线一区| 国产黑丝在线观看| 亚洲日本三级| 欧美一卡二卡在线| 91小视频在线观看| 亚洲一区二区在线免费观看视频| 国产精品成人久久久| 亚洲人成网www| 欧美三级日本三级少妇99| 羞羞视频在线观看免费| 国产精品∨欧美精品v日韩精品| 亚洲电影在线| 天天爱天天干天天操| www污污在线| 日本伦理一区二区三区| 超碰在线资源站| 精品视频久久久久久| 妺妺窝人体色www聚色窝仙踪| 欧美性猛交xxxx乱大交hd| 性做久久久久久久久久| 成人欧美一区二区| 欧美成人一二三| 巨乳女教师的诱惑| 国产在线看片免费视频在线观看| 国产成人精品无码片区在线| 91精品久久久久久久久久不卡| 亚洲视频资源在线| 国产伦理一区| 一区视频网站| 免费不卡的av| 三级在线免费看| 国产丝袜自拍| 国产999在线观看|