国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Mybatis逆工程jar包的修改和打包

2019-11-26 14:14:27
字體:
來源:轉載
供稿:網友

上一篇文章Mybatis逆工程的使用主要是講了mybatis-generator-core-1.3.2.jar的使用,這一篇我要介紹的是,修改jar包代碼,實現生成自定義模板。

1.我們從這里可以下載mybatis-generator-core-1.3.2.jar項目源碼

http://maven.outofmemory.cn/org.mybatis.generator/mybatis-generator-core/1.3.2/

2.在eclipse下導入存在的maven項目,File->Import

選擇項目源碼位置,點finish完成導入。

項目目錄結構大概這樣子。

3.下面我逆工程要生成的mapping和xml格式。

4.開始修改,首先說明一下各目錄

最底邊的tse包是我自定義的包,里面是個主類,測試生成的代碼是否達到預期標準。

由于這個架包是老外寫的,生成的代碼風格和我們不大一一樣,如果你想修改代碼格式,建議你看一下菠蘿大象的文章,我這里就不講代碼格式了。

http://www.blogjava.net/bolo/archive/2015/03/20/423683.html

首先,我們先修改逆工程要生成的接口文件mapping的代碼,默認情況下有增刪改查,我們講其中一個改方法update吧

比如 我要讓生成的mapping中有這樣的一個方法 void update(Map<String, Object> dataMap);

就修改org.mybatis.generator.codegen.mybatis3.javamapper.elements包下的UpdateByPrimaryKeyWithoutBLOBsMethodGenerator類,如下:

/** Copyright 2009 The Apache Software Foundation** 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 org.mybatis.generator.codegen.mybatis3.javamapper.elements;import java.util.Set;import java.util.TreeSet;import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;import org.mybatis.generator.api.dom.java.Interface;import org.mybatis.generator.api.dom.java.JavaVisibility;import org.mybatis.generator.api.dom.java.Method;import org.mybatis.generator.api.dom.java.Parameter;/*** * @author Jeff Butler* */public class UpdateByPrimaryKeyWithoutBLOBsMethodGenerator extendsAbstractJavaMapperMethodGenerator {public UpdateByPrimaryKeyWithoutBLOBsMethodGenerator() {super();}@Overridepublic void addInterfaceElements(Interface interfaze) {Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();FullyQualifiedJavaType parameterType = new FullyQualifiedJavaType(introspectedTable.getBaseRecordType());importedTypes.add(parameterType);//新增一個方法Method method = new Method();//添加方法修飾符PUBLICmethod.setVisibility(JavaVisibility.PUBLIC);//設置返回值,這里我用的是自定義的void,無返回值方法 getVoidInstance()//FullyQualifiedJavaType類中可以自定義返回值方法,大家可以自己進去添加//不想那么麻煩的話,可以 new FullyQualifiedJavaType("void") , 構造函數寫上返回類型就行了method.setReturnType(FullyQualifiedJavaType.getVoidInstance());//設置方法名,同樣可以自己進去看method.setName(introspectedTable.getUpdateByPrimaryKeyStatementId());//method.addParameter(new Parameter(parameterType, "record")); //$NON-NLS-1$FullyQualifiedJavaType mapType=FullyQualifiedJavaType.getMyMapInstance();//方法的參數,這里是Map類型的dateMap參數Parameter parameter = new Parameter(mapType, "dataMap");method.addParameter(parameter);context.getCommentGenerator().addGeneralMethodComment(method,introspectedTable);addMapperAnnotations(interfaze, method);if (context.getPlugins().clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated(method,interfaze, introspectedTable)) {interfaze.addImportedTypes(importedTypes);interfaze.addMethod(method);}}public void addMapperAnnotations(Interface interfaze, Method method) {return;}} 

大家可以根據注釋來修改。

接下來修改mapping對應的xml中的代碼,同樣的,這里我只介紹修改update方法,相信看完你就能自己修改其它方法。

就修改org.mybatis.generator.codegen.mybatis3.xmlmapper.elements包下的UpdateByPrimaryKeyWithoutBLOBsElementGenerator類,如下:

/** Copyright 2009 The Apache Software Foundation** 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 org.mybatis.generator.codegen.mybatis3.xmlmapper.elements;import java.util.Iterator;import java.util.List;import org.mybatis.generator.api.IntrospectedColumn;import org.mybatis.generator.api.dom.OutputUtilities;import org.mybatis.generator.api.dom.xml.Attribute;import org.mybatis.generator.api.dom.xml.TextElement;import org.mybatis.generator.api.dom.xml.XmlElement;import org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities;/*** * @author Jeff Butler* */public class UpdateByPrimaryKeyWithoutBLOBsElementGenerator extendsAbstractXmlElementGenerator {//private boolean isSimple;public UpdateByPrimaryKeyWithoutBLOBsElementGenerator(boolean isSimple) {super();//this.isSimple = isSimple;}@Overridepublic void addElements(XmlElement parentElement) {//update標簽(方法最外層)XmlElement answer = new XmlElement("update"); //$NON-NLS-1$//update標簽的屬性answer.addAttribute(new Attribute("id", introspectedTable.getUpdateByPrimaryKeyStatementId())); //$NON-NLS-1$answer.addAttribute(new Attribute("parameterType", //$NON-NLS-1$"Map"));//把標簽加進去context.getCommentGenerator().addComment(answer);StringBuilder sb = new StringBuilder();sb.append("update "); //$NON-NLS-1$sb.append(introspectedTable.getFullyQualifiedTableNameAtRuntime());//標簽內容,即文本元素answer.addElement(new TextElement(sb.toString()));sb.setLength(0);//set標簽XmlElement setElement = new XmlElement("set"); //$NON-NLS-1$//獲取數據庫表中的所有字段List <IntrospectedColumn> cols=introspectedTable.getAllColumns();//迭代java.util.Iterator<IntrospectedColumn> iter =cols.iterator();while (iter.hasNext()) {//迭代//迭代到某一字段IntrospectedColumn introspectedColumn = iter.next();//if標簽XmlElement ifElement = new XmlElement("if"); //$NON-NLS-1$//字段名String str=MyBatis3FormattingUtilities.getEscapedColumnName(introspectedColumn);//if標簽添加屬性test,值為 字段 !=null and 字段!=''ifElement.addAttribute(new Attribute("test",str+" != null and "+str+"!='' "));//if標簽內容 ,文本元素,給字段賦予即將修改的值sb.append(MyBatis3FormattingUtilities.getEscapedColumnName(introspectedColumn));sb.append(" = "); //$NON-NLS-1$sb.append(MyBatis3FormattingUtilities.getParameterClause(introspectedColumn));if (iter.hasNext()) {sb.append(',');}//if標簽添加上面的文本元素ifElement.addElement(new TextElement(sb.toString()));if (iter.hasNext()) {sb.setLength(0);OutputUtilities.xmlIndent(sb, 1);}setElement.addElement(ifElement);}//where元素(修改的字段前提條件)XmlElement whereElement =new XmlElement("where");for (IntrospectedColumn introspectedColumn : introspectedTable.getPrimaryKeyColumns()) {//遍歷表中字段進行判斷sb.setLength(0);sb.append(MyBatis3FormattingUtilities.getEscapedColumnName(introspectedColumn));sb.append(" = "); //$NON-NLS-1$sb.append(MyBatis3FormattingUtilities.getParameterClause(introspectedColumn));whereElement.addElement(new TextElement(sb.toString()));}//方法中最外層xml元素 update元素添加set元素和where元素answer.addElement(setElement);answer.addElement(whereElement);if (context.getPlugins().sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(answer,introspectedTable)) {parentElement.addElement(answer);}}} 

其它方法大家可以根據這個update方法改。

如果要添加新方法的話參考下面這個帖子

http://m.blog.csdn.net/article/details?id=35985705

下面我來驗證修改成果

generatorConfig.xml //先配置xml 放在src/main/resources/ 目錄下<?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> <!-- 引入配置文件 --> <!-- 指定數據連接驅動jar地址 --> <classPathEntry location="E:/eclipse_workspace/testMybatis/mysql-connector-java-5.1.13-bin.jar" /> <!-- 一個數據庫一個context --> <context id="infoGuardian" targetRuntime="MyBatis3"> <!-- 注釋 --> <commentGenerator > <property name="suppressAllComments" value="true"/><!-- 是否取消注釋 --> <property name="suppressDate" value="true" /> <!-- 是否生成注釋代時間戳--> </commentGenerator> <!-- jdbc連接 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/login?characterEncoding=UTF-8" userId="root" password="root" /> <!-- 類型轉換 --> <javaTypeResolver> <!-- 是否使用bigDecimal, false可自動轉化以下類型(Long, Integer, Short, etc.) --> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成實體類地址 --> <javaModelGenerator targetPackage="pojo" targetProject="mybatis3" > <!-- 是否在當前路徑下新加一層schema,eg:fase路徑cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] --> <property name="enableSubPackages" value="true"/> <!-- 是否針對string類型的字段在set的時候進行trim調用 --> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成mapxml文件 --> <sqlMapGenerator targetPackage="mapper" targetProject="mybatis3" > <!-- 是否在當前路徑下新加一層schema,eg:fase路徑cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] --> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 生成mapxml對應client,也就是接口dao --> <javaClientGenerator type="XMLMAPPER" targetPackage="mapper" targetProject="mybatis3"> <!-- 是否在當前路徑下新加一層schema,eg:fase路徑cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] --> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 配置表信息,這里沒生成一張表,這里需要改變一次對應表名 --> <table tableName="login" domainObjectName="Login" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"> </table> </context> </generatorConfiguration> 

StartUp.java//驗證的主程序

package tse;import static org.junit.Assert.assertEquals;import java.io.File;import java.util.ArrayList;import java.util.List;import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generator.config.Configuration;import org.mybatis.generator.config.xml.ConfigurationParser;import org.mybatis.generator.internal.DefaultShellCallback;public class StartUp {public static void main(String []args)throws Exception{List<String> warnings = new ArrayList<String>();File configFile=new File(StartUp.class.getResource("/generatorConfig.xml").toURI());ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback shellCallback = new DefaultShellCallback(true);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, shellCallback, warnings);myBatisGenerator.generate(null);System.out.println(warnings);}} 

好了,運行StartUp.java

就根據generatorConfig.xml的配置在目標目錄生成對應文件。

OK,和我預期結果一樣。

5.上面修改完了,我們開始打包。

由于是個maven項目,我用的是maven3.3.9,大家也可以用eclipse內置的maven,反正我是不喜歡。

下面是我maven項目的pom.xml文件代碼

<?xml version="1.0" encoding="UTF-8"?><!--Copyright 2009-2011 The MyBatis TeamLicensed 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 athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed 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 andlimitations under the License.--><!--version: $Id: pom.xml 4114 2011-11-27 19:03:32Z simone.tripodi $--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator</artifactId><version>1.3.2</version></parent><artifactId>mybatis-generator-core</artifactId><packaging>jar</packaging><name>MyBatis Generator Core</name><build><!-- this build creates and installs an instrumented JAR filefor use by the systests projects - so we can gatherconsolidated coverage information--><plugins><!-- <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><executions><execution><phase>prepare-package</phase><goals><goal>site</goal></goals></execution></executions></plugin> --><!-- <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><executions><execution><phase>prepare-package</phase><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin> --><!-- <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-sources</id><goals><goal>jar</goal></goals><configuration><includes><include>**/org/**</include></includes></configuration></execution></executions></plugin> --><!-- <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><executions><execution><phase>prepare-package</phase><goals><goal>jar</goal></goals></execution></executions></plugin> --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId><executions><execution><id>cobertura-instrument</id><phase>pre-integration-test</phase><goals><goal>instrument</goal></goals></execution></executions> </plugin><!-- <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><mainClass>org.mybatis.generator.api.ShellRunner</mainClass></manifest></archive></configuration><executions><execution><id>cobertura-jar</id><phase>integration-test</phase><goals><goal>jar</goal></goals><configuration><classifier>cobertura</classifier><classesDirectory>${basedir}/target/generated-classes/cobertura</classesDirectory></configuration></execution></executions></plugin> --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.4</version><executions><execution><id>attach-jar</id><phase>integration-test</phase><goals><goal>jar</goal></goals></execution></executions><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix></classpathPrefix><mainClass>org.mybatis.generator.api.ShellRunner</mainClass></manifest></archive><includes><include>**/org/**</include></includes></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifactId><executions><execution><id>cobertura-install</id><phase>integration-test</phase><goals><goal>install</goal></goals><configuration><classifier>cobertura</classifier></configuration></execution></executions> </plugin><!-- <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptors><descriptor>${basedir}/src/main/assembly/src.xml</descriptor></descriptors></configuration> <executions><execution><id>bundle</id><goals><goal>single</goal></goals><phase>package</phase></execution></executions></plugin> --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><appendAssemblyId>false</appendAssemblyId><descriptors><descriptor>${basedir}/src/main/assembly/src.xml</descriptor></descriptors></configuration> <executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin><plugin><groupId>com.googlecode.maven-gcu-plugin</groupId><artifactId>maven-gcu-plugin</artifactId><executions><execution><phase>deploy</phase><goals><goal>upload</goal></goals><configuration><uploads><upload><file>${project.build.directory}/${project.artifactId}-${project.version}-bundle.zip</file><summary>MyBatis Generator ${project.version}</summary><labels><label>Featured</label><label>Type-Archive</label><label>Product-Generator</label><label>Version-${project.version}</label></labels></upload></uploads></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><configuration><arguments>-Prelease,gupload</arguments></configuration></plugin></plugins></build><reporting><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>jdepend-maven-plugin</artifactId><version>2.0-beta-2</version></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId></plugin></plugins></reporting><dependencies><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><scope>provided</scope></dependency><dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId><scope>provided</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.hsqldb</groupId><artifactId>hsqldb</artifactId><scope>test</scope></dependency><dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.12</version></dependency></dependencies><scm><url>https://mybatis.googlecode.com/svn/sub-projects/generator/tags/mybatis-generator-1.3.2/mybatis-generator-core</url><connection>scm:svn:https://mybatis.googlecode.com/svn/sub-projects/generator/tags/mybatis-generator-1.3.2/mybatis-generator-core</connection><developerConnection>scm:svn:https://mybatis.googlecode.com/svn/sub-projects/generator/tags/mybatis-generator-1.3.2/mybatis-generator-core</developerConnection></scm> </project> 

然后是修改src/main/assembly/src.xml代碼

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"><id>bundle</id><formats><format>zip</format></formats><fileSets><fileSet><directory>src/main/resources</directory><outputDirectory>/</outputDirectory><includes><include>generatorConfig.xml</include></includes><excludes><exclude>log4j.properties</exclude><exclude>src.xml</exclude></excludes></fileSet><fileSet><directory>src/main/scripts</directory><outputDirectory>/</outputDirectory><includes><include>run.bat</include></includes></fileSet><fileSet><directory>${project.build.directory}</directory><outputDirectory>/</outputDirectory><includes><include>${project.artifactId}-${project.version}.jar</include></includes></fileSet><fileSet><directory>${project.build.directory}</directory><outputDirectory>/</outputDirectory><includes><include>${project.artifactId}-${project.version}-sources.jar</include></includes></fileSet></fileSets></assembly> 

接下來,在src/main/ 下面新建scripts文件夾,在scripts文件夾新建txt文本文檔,輸入以下代碼

java -jar mybatis-generator-1.3.2.jar -configfile generatorConfig.xml

主站蜘蛛池模板: 靖宇县| 合阳县| 吉安县| 华池县| 桐柏县| 兴化市| 绥棱县| 襄垣县| 瓮安县| 沈丘县| 塔河县| 长宁区| 天镇县| 苍梧县| 繁峙县| 临桂县| 正阳县| 许昌县| 通海县| 武功县| 罗江县| 胶南市| 南安市| 永泰县| 溧水县| 泗水县| 沂南县| 屏边| 丹棱县| 辽宁省| 峨边| 诸暨市| 德江县| 六安市| 都匀市| 仁布县| 拉萨市| 右玉县| 香港 | 塘沽区| 安康市|