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

上一篇文章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 extends
AbstractJavaMapperMethodGenerator {
public UpdateByPrimaryKeyWithoutBLOBsMethodGenerator() {
super();
}
@Override
public void addInterfaceElements(Interface interfaze) {
Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
FullyQualifiedJavaType parameterType = new FullyQualifiedJavaType(
introspectedTable.getBaseRecordType());
importedTypes.add(parameterType);
//新增一个方法
Method method = new Method();
//添加方法修饰符PUBLIC
method.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 extends
AbstractXmlElementGenerator {
//private boolean isSimple;
public UpdateByPrimaryKeyWithoutBLOBsElementGenerator(boolean isSimple) {
super();
//this.isSimple = isSimple;
}
@Override
public 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 Team
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.
-->
<!--
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 file
for use by the systests projects - so we can gather
consolidated 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 –overwrite
pause

改文件名为run.bat

至此,打包配置完毕。

大家可以在项目下右键Run as->maven build 在goal里输入package。或者命令行cmd中 进入项目的目录,运行mvn package,这里第一次运行会等待很久,因为maven会下载依赖的jar包,请耐心等待。

打包完毕,就会在项目根目录下的target目录生成如下结构

从上图中我们可以看到mybatis-generator-core-1.3.2.jar包已经生成。接下来我们可以用它加上generatorConfig.xml来生成自己想要的代码。

如果修改代码过程中有什么不懂的,请多看源代码。

OK,晒下成果图

本文就讲到这里!

以上所述是小编给大家介绍的Mybatis逆工程jar包的修改和打包的相关知识,希望对大家有所帮助!

(0)

相关推荐

  • MyBatis框架之mybatis逆向工程自动生成代码

    Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件. 逆向工程 1.什么是逆向工程 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml.po..) 企业实际开发中,常用的逆向工程方式: 由于数据库的表生成java代码. 2.下载逆向工程 my

  • Mybatis逆工程的使用

    最近在学Mybatis,类似Hibernate,Mybatis也有逆工程可以直接生成代码(mapping,xml,pojo),方便快速开发.用的是mybatis-generator-core-1.3.2.jar这个架包.这里我用的是mysql数据库. 1.下载mybatis-generator-core-1.3.2.jar和mysql-connector-java-5.1.13-bin.jar,大家可以在这里下载http://maven.outofmemory.cn/org.mybatis.ge

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

    上一篇文章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->Imp

  • java如何反编译jar包并修改class文件重新打包

    目录 反编译jar包并修改class文件重新打包 解决思路 jar包反编译后修改源码再编译 1.场景 2.详细步骤 反编译jar包并修改class文件重新打包 这两天碰到一个需求:需要修改一个jar包中的逻辑代码,并且重新打包 本来是很简单的问题,但是因为这个jar包不是可执行的jar包(没有main方法入口),jar反编译之后又是不能通过idea重新打包,因为jar是混乱的 所以费了点时间,在此记录下 解决思路 反编译jar包 首先用一些反编译工具类似 jad-gui 之类的 ,将项目反编译成

  • springboot工程jar包部署到云服务器的方法

    首先,springboot在这里不多做介绍了,关于怎么打成jar包,我相信凡是用过的同学都知道吧! 然后就是将jar包上传到云服务器了,这个有好些工具的,博主在这里也不多做说明了! 咱们还是直奔主题吧.... 运行命令:java -jar xxx.jar,然后springboot工程的内置tomcat就开启了,项目已经启动,接下来你就可以访问了. 感觉一切ok,其实你已经掉到坑里了... 怎么回事呢? 当你关闭当前的xshell 命令界面时,再次访问就失效了,why? why? why? 这是因

  • 详解用maven将dubbo工程打成jar包运行

    maven打包方式 使用maven打包插件maven-jar-plugin 在pom.xml文件最后新增以下代码. maven-dependency-plugin是指将依赖的jar包复制到指定目录 maven-resources-plugin将依赖的resources复制到指定目录 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifact

  • 使用maven工具解决jar包冲突或重复加载的问题

    在使用maven开发项目的过程中,经常会遇到jar包重复加载或者jar包冲突的问题的,但是由于有些jar是由于maven的依赖加载自动加载进来的, 而不是开发者自己配置的,特别是当项目中pom中配置的jar包依赖本身很多时,开发者靠自己的经验,有时很难找出是哪个jar的加载导致加载了 多余的依赖jar,从而产生冲突. 今天刚好遇到一个借用eclipse中的maven插件解决jar包依赖冲突的问题,分享一下. 项目中出现的问题如下: Caused by: java.lang.NoClassDefF

  • IDEA中如何正确快速打jar包的方式

    1.打开idea 如图所示:点击箭头所指的位置: 2.选择你自己要打包的available element 后 如图所示 逐步点击即可 进入如下页面 点击ok 打包完成 来到主页面 对新打的jar包 build 选择刚打的新包build 此时jar包完成 在如下界面查看 ps:idea打jar包方式, 方式一 使用idea自带的打包方式 点击File ->project structure 选择Artifacts 然后点击绿色加号 按图一次选择 点击 完成后会弹出此界面  此时需要注意 信息的填

  • 使用Springboot 打jar包实现分离依赖lib和配置

    目录 打jar包实现分离依赖lib和配置 操作步骤 Springboot中jar包分离(分离lib包) jar包分离介绍 jar包分离实施步骤 小结一下 打jar包实现分离依赖lib和配置 为了业务需要配置文件和jar分离,便于使用者修改配置信息,在网上找了很久,最终找到一个简单有效的方法. 操作步骤 打开project工程的pom.xml文件,将下列配置粘贴到pom文件中: <properties> <java.version>1.8</java.version> &

  • Andriod开发中引入jar包的正确方式介绍

    andriod中如果引入jar包的方式不对就会出现一些奇怪的错误. 工作的时候恰好有一个jar包需要调用,结果用了很长时间才解决出现的bug. 刚开始是这样引用的(eclipse): 右键工程,Build path,java build path, 选择libraries,在右边的按钮中点击"Add External JARs", 然后选择合适的jar包(大部分人应该会这样做). 结果控制台立刻报错:conversion to dalvik format failed with err

  • Python调用jar包方法实现过程解析

    需求 最近在后台项目代码中一段自定义的AES加解密的程序在平时的测试工作中应用频繁.因为写脚本经常会需要使用,而经过各种尝试,比如jpype等,都不尽如人意.最后转换思路找到了一种好方法: 1. 将java项目打成jar包: 2. 设定jar包的Main-class属性: 3. 在python中通过subprocess执行jar包. 修改main函数打jar包 在intellij中打jar包: 1. File--> Project Structure... --> Artifacts --&g

随机推荐