Java文件操作(添加xml注解、属性改驼峰)

本文介绍了一个Java文件操作类,主要用于处理XML文件,包括将XML节点转换为大写加下划线格式,将带有下划线的字段改为驼峰命名,创建数据库表实体类,以及移除所有XML。该工具类旨在自动化处理这些常见需求,提高效率并减少手动修改可能带来的错误。

针对如下情况,写了这个Java文件操作类:

1.有时候项目要求报文必须是XML格式并且节点为大写加下划线

2.第三方接口报文是xml格式,且字段带下划线

3.创建数据库表实体类

4.移出所有xml

由于手动修改比较费时且容易出错,所以写了这个工具类,代码如下:

package com.qufeng.cq.util;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 操作XML注解
 *@author qufeng
 *@Date 2020年11月10日
 * 
 */
public class JavaFileUtils {
	private static final String YYYY_MM_DD_HH_MM_SS_SSS ="yyyyMMddhhmmssSSS";
	private static final String ENCODING = "UTF-8"; 
	
	/**
	 * 添加XML注解 大写加下划线
	 * @param productPath 项目地址 为空的话取当前路径
	 * @param clazz
	 * @param backup 是否备份
	 * @throws IOException
	 */
	public static void addXmlUpperUnderLine(String productPath, Class<?> clazz, boolean backup) throws IOException{
		productPath = StringUtils.isBlank(productPath) ? new File("").getAbsolutePath().toLowerCase() : productPath;
		//根路径
		String rootPath = productPath + "/src/main/java/";
		//包路径
		String packagePath = clazz.getPackage().getName().replaceAll("\\.", "/");
		//类名
		String className = clazz.getSimpleName();
		//文件呢路径
		String filePath = rootPath + "/" + packagePath + "/" + className + ".java";
		Field[] dields = clazz.getDeclaredFields();
		List<String> fieldNames = new ArrayList<>(); 
		for(Field field : dields){
			fieldNames.add(field.getName());
		}
		fieldNames.remove("serialVersionUID");//移出序列化属性
		File file = new File(filePath);
		List<String> lines = FileUtils.readLines(file, ENCODING);
		if(dields.length > 0){
			lines.add(2, "import javax.xml.bind.annotation.XmlElement;");
		}
		List<String> newLines = new ArrayList<>();
		boolean firstWrap = true;//第一次添加wrapper包
		for (String line : lines) {
			String tempLine = line.trim();
			//非空白行 且非注释行
			if(!tempLine.equals("") && tempLine.indexOf("//") != 0){
				String[] temp = tempLine.split(";")[0].split("=")[0]
<think> 首先,用户的问题是关于在Java Spring Boot项目中自定义添加mybatis-config.xml文件的方法。我需要基于提供的引用内容来回答。 回顾引用: - 引用[1]:提到Spring Boot主张用JavaConfig代替XML配置,但用户想用XML。 - 引用[2]:展示了一个使用JavaConfig的例子,通过ConfigurationCustomizer来设置参数,如mapUnderscoreToCamelCase。 - 引用[3]:在application.yaml中配置MyBatis规则,提到可以指定全局配置文件位置,如config-location: classpath:mybatis/mybatis-config.xml。 - 引用[4]:添加resources配置来让项目编译时扫描src/main/java里的XML文件,并提到Mapper注解。 用户明确说:"我想查找在Java Spring Boot项目中自定义添加mybatis-config.xml文件的方法"。所以,我需要聚焦于如何添加自定义的mybatis-config.xml文件。 关键点: - 在Spring Boot中,默认推荐使用JavaConfig,但支持XML配置。 - 引用[3]直接提到了在application.yaml中配置config-location属性来指定mybatis-config.xml的位置。 - 引用[4]讨论了如何确保XML文件被编译包含,特别是如果XML文件在src/main/java目录下。 步骤指南: 1. **创建mybatis-config.xml文件**:通常在resources目录下创建,比如在src/main/resources目录下创建一个文件夹如mybatis,然后放mybatis-config.xml文件。 2. **配置application.properties或application.yml**:设置mybatis.config-location属性来指向这个文件。例如,在application.yml中: ```yaml mybatis: config-location: classpath:mybatis/mybatis-config.xml ``` 3. **确保XML文件被包含**:如果XML文件在src/main/java下的包中,需要配置构建工具(如Maven)来包含它们。引用[4]给出了Maven配置: ```xml <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build> ``` 4. **注解配置**:为了使用XML配置,可能不需要额外的JavaConfig,但引用[2]展示了JavaConfig方式;用户想要XML,所以专注于XML配置。 完整回答结构: - 先解释方法。 - 提供步骤。 - 基于引用添加引用标识。 - 结束时生成相关问题(根据系统指令)。 引用标识: - 引用[3]讨论了config-location的使用:[^3] - 引用[4]讨论了资源包含:[^4] - 其他引用相关但次要。 生成相关问题: - 类似示例中的风格,针对用户主题。 最终回答: 1. 介绍方法。 2. 步骤包括创建文件、配置属性、构建配置。 3. 添加引用。 4. 相关问题。 </think> ### Spring Boot项目中自定义添加mybatis-config.xml文件的方法 在Spring Boot项目中,虽然官方推荐使用JavaConfig代替XML配置(如引用[1]所述),但您仍然可以通过以下步骤自定义添加`mybatis-config.xml`文件。以下是详细步骤,确保您的XML配置被正确加载和使用。整个过程分为三个主要步骤: #### 1. **创建mybatis-config.xml文件** 首先,将配置文件放置在资源目录下。通常,建议放在`src/main/resources`的子目录中(如`mybatis`),以避免编译问题。例如: - 文件路径:`src/main/resources/mybatis/mybatis-config.xml` - 文件内容示例(自定义MyBatis全局配置): ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 启用驼峰命名映射 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 其他自定义配置,如类型别名、插件等 --> </configuration> ``` #### 2. **配置application.yml或application.properties** 在Spring Boot的配置文件(如`application.yml`)中,指定`mybatis.config-location`属性来加载XML文件。确保路径与步骤1中的位置一致: - 在`application.yml`中添加: ```yaml mybatis: config-location: classpath:mybatis/mybatis-config.xml # 指定XML配置文件路径 # 可选:映射文件位置(如果使用了XML Mapper) mapper-locations: classpath:mybatis/mapper/*.xml ``` 或使用`application.properties`: ```properties mybatis.config-location=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mybatis/mapper/*.xml ``` > **注意**:`config-location`属性会加载自定义的全局配置(如引用[3]所示),但避免同时使用JavaConfig和XML配置以避免冲突[^3]。 #### 3. **确保XML文件在构建时被包含(可选)** 如果您的`mybatis-config.xml`文件位于`src/main/java`目录下(而非`resources`),需配置Maven或Gradle在编译时包含XML文件: - **Maven配置(pom.xml)**:添加资源过滤规则,确保XML文件被复制到类路径: ```xml <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <!-- 包含所有XML文件 --> </includes> <filtering>true</filtering> </resource> <!-- 默认包含resources目录 --> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> ``` 如引用[4]所述,这确保编译时扫描`src/main/java`中的XML[^4]。 - **Gradle配置(build.gradle)**:添加以下规则: ```groovy sourceSets { main { resources.srcDirs += ['src/main/java'] // 添加Java目录到资源扫描 } } ``` #### 其他注意事项 - **避免与JavaConfig冲突**:如果您已使用JavaConfig(如引用[2]中的`ConfigurationCustomizer`),请删除相关代码,否则Spring Boot可能优先加载JavaConfig导致XML配置失效[^2][^3]。 - **Mapper接口处理**:定义Mapper接口时,使用`@Mapper`注解或在启动类添加`@MapperScan("your.package")`(如引用[4]建议)。例如: ```java @SpringBootApplication @MapperScan("com.example.mapper") // 扫描Mapper接口包 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 通过以上步骤,您的`mybatis-config.xml`文件会被Spring Boot自动加载,实现自定义配置。如果遇到问题,检查文件路径是否正确且没有与其他配置方式冲突[^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值