`

java去mybatis里面自动生成的Example文件 和烦人的注释

阅读更多
上篇mybatis里面写了怎么配置mybatis自动生成代码的生成器。
但是生成出来的代码含有Example文件和相当多的注释,令我很反感,所以根据我自己的需求和我想要得到的效果,于是我就编写了的代码来解决这2个烦人的东西

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 * 删除mybatis的注释类
 * @author jynine
 *
 */
public class DelAnnotation {
	private static String PROJECTPATH = null;
	private static String MODELPATH = null;
	private static String DAOPATH = null;
	private static String MAPPERPATH = null;
	/**
	 * 初始化路径
	 * @param pro
	 */
	public static void initPath(Properties pro){
		PROJECTPATH = pro.getProperty("projectpath");
		if(PROJECTPATH != null && !PROJECTPATH.equals("")){
			MODELPATH = PROJECTPATH + pro.getProperty("modelpath");
			DAOPATH = PROJECTPATH + pro.getProperty("daopath");
			MAPPERPATH = PROJECTPATH + pro.getProperty("mapperpath");
		}
		
	}
	/**
	 * 
	 * @param oldFile
	 * @param newFile
	 * @param className
	 *            类名
	 * @param type
	 *            0:model 1:dao 2:mapper
	 */
	public static void copyFile(File oldFile, File newFile, String className,
			int type) {
		BufferedReader reader = null;
		FileWriter fileWriter = null;
		try {
			reader = new BufferedReader(new FileReader(oldFile));
			fileWriter = new FileWriter(newFile);
			String tempString = null;
			int line = 1;
			boolean tag = true;
			boolean delimport = false;
			boolean examTag = false;
			String examStr = "";
			while ((tempString = reader.readLine()) != null) {
				if (type == 2) {
					if (tempString.contains("<!--")) {
						tag = false;
					}
					if(tempString.contains(className+"Mapper")){
						tempString = tempString.replace(className+"Mapper", className+"Dao");
					}
					if(tempString.contains("Example") && !examTag){
						examTag = true;
						examStr = tempString.substring(tempString.indexOf("<")+1,tempString.indexOf(" ", tempString.indexOf("<")));
					}
					
					if (tag && !examTag) {
						fileWriter.write(tempString + "\n");
					}
					if (tempString.contains("-->")) {
						tag = true;
					}
					if(examStr != null && examStr != ""){
						if(tempString.contains("</"+examStr+">")){
							examTag = false;
						}
					}
					line++;
				} else {
					delimport = false;
					if (tempString.contains("/**")) {
						tag = false;
					}
					if (tag) {
						if (type == 1) {
							if (tempString.indexOf(className + "Mapper") != -1) {
								tempString = tempString.replaceAll(className
										+ "Mapper", className + "Dao");
							}
							if (tempString.indexOf(className + "Example") != -1) {
									delimport = true;
							}
							if(tempString.indexOf("record") != -1){
								tempString = tempString.replaceAll(
										"record",className.substring(0, 1).toLowerCase()
										+ className.substring(1,
												className.length()));
							}
							if (tempString.indexOf("example") != -1) {
								tempString = tempString.replaceAll(
										"example",className.substring(0, 1).toLowerCase()
										+ className.substring(1,
												className.length()));
							}
							if(!delimport){
								fileWriter.write(tempString + "\n");
							}
						}else{							
							fileWriter.write(tempString + "\n");
						}
					}
					if (tempString.contains("*/")) {
						tag = true;
					}
					line++;
				}

			}
			fileWriter.close();
			reader.close();
			oldFile.delete();
		} catch (IOException e) {
			System.out.println("文件删除失败:"+e.getMessage());
		} finally {
			if (reader != null) {
				try {
					reader.close();
					fileWriter.close();
				} catch (IOException e1) {
					System.out.println("流关闭异常:"+e1.getMessage());
				}
			}
		}
		
	}
	/**
	 * 删除所有注释
	 * @param table
	 */
	public static void delAllAnnotation(String table) {
		delModelAnnotation(table);
		delDaoAnnotation(table);
		delXmlAnnotation(table);
		System.out.println("注释清理成功!");
	}
	/**
	 * 删除类中的注释
	 * @param table
	 */
	public static void delModelAnnotation(String table){
		File oldFile = new File(MODELPATH + table + ".java");
		File newFile = new File(MODELPATH + table + "Temp1.java");
		File tempFile = new File(MODELPATH + table + "Example.java");
		tempFile.delete();
		copyFile(oldFile, newFile, table, 0);
		copyFile(newFile, oldFile, table, 0);
	}
	/**
	 * 删除dao中的注释
	 * @param table
	 */
	public static void delDaoAnnotation(String table){
		File oldDaoFile = new File(DAOPATH + table + "Mapper.java");
		File newDaoFile = new File(DAOPATH + table + "Dao.java");
		copyFile(oldDaoFile, newDaoFile, table, 1);
	}
	/**
	 * 删除xml中的注释
	 * @param table
	 */
	public static void delXmlAnnotation(String table){
		File oldMapperFile = new File(MAPPERPATH + table + "Mapper.xml");
		File newMapperFile = new File(MAPPERPATH + table + "MapperTemp1.xml");
		copyFile(oldMapperFile, newMapperFile, table, 2);
		copyFile(newMapperFile, oldMapperFile, table, 2);
	}
	
	
	
	public static void main(String[] args) {
		InputStream in =new DelAnnotation().getClass().getClassLoader()
				.getResourceAsStream("config.properties"); 
		Properties pro = new Properties();
		try {
			pro.load(in);
			initPath(pro);
			if(PROJECTPATH != null && !PROJECTPATH.equals("")){				
				delAllAnnotation(pro.getProperty("classname"));
			}else{
				System.out.println("请配置路径!");
			}
		} catch (IOException e) {
			System.out.println("出错了!!");
		}
	}
}


config.properties配置文件

classname=TestMasterlog
projectpath=F:/myworkspace/TSSC
modelpath=/src/main/java/com/complaint/model/
daopath=/src/main/java/com/complaint/dao/
mapperpath=/src/main/resources/com/complaint/dao/mapping/


你也可以将上面的代码保存在和generator.bat(不知道generator.bat的童鞋可以看上一篇:http://jynine.iteye.com/blog/1879707)同一个路径下,
然后再generator.bat里面添加下面的代码:
javac DelAnnotation.java
java DelAnnotation

generator.bat最终效果如下:
@echo off
echo==========mybatis开始生成代码================
java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite  
javac DelAnnotation.java
java DelAnnotation
pause
echo==========mybatis生成代码完毕================


ps:路径和上一篇有出入,请自行修改成你自己的路径。童鞋们也可以修改这个类,让它可以支持同时操作多个类。
分享到:
评论

相关推荐

    mybatis自动生成mapper文件

    下面将详细阐述MyBatis Generator的使用方法、功能以及它如何帮助我们自动化生成实体类和Mapper文件。 1. **MyBatis Generator概述** MyBatis Generator基于Java,它可以解析数据库表结构,并根据这些信息生成相应...

    mybatis xml文件自动生成

    "mybatis xml文件自动生成"是开发过程中的一个重要环节,它可以帮助开发者提高效率,减少手动编写XML映射文件和对应的POJO(Plain Old Java Object)类的工作量。 MyBatis的Mapper文件是其核心组成部分之一,它包含...

    mybatis 代码自动生成 ,并且自定义注释结合swagger

    这样,当我们优化MBG时,也可以确保生成的代码能够与Swagger注解兼容,使得API文档随着代码的生成自动更新。 在`remarks`这个文件中,可能包含了自定义注释格式的示例或者配置文件的模板。你可以根据这个文件的内容...

    Mybatis Generator自动生成JavaEntity带中文注释和注解[Maven]工程

    Mybatis Generator是一款强大的工具,它能够自动生成Java实体类(Entity)、Mapper接口和XML配置文件,极大地提高了开发效率。在"Maven"环境下,我们可以轻松地集成这个插件,实现自动化代码生成,尤其对于处理带有...

    mybatis批处理自动生成代码文件

    MyBatis批处理自动生成代码文件是一项非常实用的功能,它能够极大地提高开发效率,减少手动编写重复代码的工作量。此工具通常包含一个`.bat`批处理脚本,用于执行自动化生成过程,以及一个`generatorConfig.xml`配置...

    java ~ mybatis-plus 自动生成实体类 jar

    java ~ mybatis-plus 自动生成实体类 jar

    java后端+mybatis-plus自动生成+xmlmapper模板+新增修改

    用mybatis-plus的自动生成器,我们一般只用到entity和mapperXML,其他mapper接口和service类都要自己写。 可以下载之后,根据自己表生成mapperXML,然后用全局替换来修改一些细节。

    mybatis代码自动生成

    描述中提到的"mybatis自动生成代码的项目,里面有详细的步骤说明,简单易懂",意味着该项目不仅提供了MBG的配置和使用,还附带了清晰的教程,帮助用户理解如何配置Generator配置文件,如何执行生成操作,以及生成的...

    mybatis 自动生成代码文件

    MyBatis Generator(MBG)是一个强大的工具,用于自动生成MyBatis的SQL映射文件、Java模型类和Mapper接口。这个工具极大地提高了开发效率,减少了手动编写这些重复性高且容易出错的代码的工作量。`mybatis-generator...

    mybatis自动生成Java实体类和映射文件的自动生成类工具

    标题中的"mybatis自动生成Java实体类和映射文件的自动生成类工具"指的就是这样的一个辅助开发工具,它可以分析数据库表结构,并根据表信息自动生成对应的Java实体类和Mapper接口及其XML配置文件。 在Java开发中,...

    Mybatis自动代码生成工具

    Mybatis自动代码生成工具是一种高效开发的神器,它极大地简化了开发者的工作,通过将数据库中的表映射为Java实体类和Mapper接口文件,使得开发者无需手动编写这些基础代码,从而节省了大量时间并降低了出错的可能性...

    JAVA-mybatis-generator代码自动生成工具

    MyBatis Generator(MBG)是一个可以自动生成Java源代码和XML配置文件的工具,这些文件是基于用户指定的数据库表。它支持多种数据库,如MySQL在这里使用的版本5.1.40,以及其他如Oracle、SQL Server等。MBG的目标是...

    MyBatis自动生成java文件

    MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码。 他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的...

    mybatis自动生成代码配置文件

    mybatis自动生成代码配置文件,通过配置文件详细讲解以生成各层代码。

    好用的mybatis代码自动生成插件

    例如,你可以指定是否生成Example类,是否覆盖已存在的文件,以及实体类字段的getter和setter方法等。 3. **定义模板**:MBG支持自定义模板,可以使用FreeMarker模板语言来定制生成的代码样式。如果你有特殊的需求...

    mybatis自动生成代码和配置文件

    MyBatis Generator是一个能够根据数据库表结构自动生成Java实体类、Mapper接口和XML配置文件的工具。以下是如何使用MyBatis Generator的基本步骤: 1. **配置MyBatis Generator XML文件**: 首先,你需要创建一个`...

    mybatis自动sql生成插件源码

    在实际应用中,要正确使用这个插件,你需要将其配置到MyBatis的配置文件中,指定拦截的Mapper接口或注解,然后在Mapper接口的方法上使用定义的注解,即可享受自动SQL生成带来的便利。同时,由于插件适配的是MyBatis ...

    mybatis-generator自动生成实体没有注释问题

    直接运行 generator.sh 命令就可以, 如果是window系统,把后缀改为bat就可以了。工具来源,... 显示效果如下: public class DiseaseDoctors { /** * 病种id */ private String id; ... }

    Mybatis代码自动生成工具

    它能够根据已有的数据库表结构自动生成相应的Java实体类(Entity Class)以及Mybatis映射文件(Mapper XML)中的SQL语句,包括Select、Insert、Update和Delete等操作。这种自动化工具极大地提高了开发效率,减少了...

    mybatis generator自动生成DAO、Bean、MapperXML等文件

    MyBatis Generator(MBG)是一款强大的自动化代码生成工具,专为MyBatis框架设计,能够自动生成DAO层、实体Bean以及Mapper XML文件,极大地提高了开发效率。在使用MBG时,用户只需要进行简单的配置,就可以自动生成...

Global site tag (gtag.js) - Google Analytics