通过实体中@TableName(“test“)找到项目中所用的表

该代码示例展示了如何使用Hutool库在Java中遍历指定目录下的文件,查找以DO.java结尾的文件,提取含有@TableName注解的行,并生成一个SQL查询语句,用于查询指定数据库中的表信息。
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.text.StrJoiner;

import java.io.File;
import java.io.FileFilter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

public class Test {

	public static void main(String[] args) {
		String rootPath = "E:/work/test/src/main/java/com/bjs/ceshi/entity";  //实体类路径
		
		List<File> files = FileUtil.loopFiles(FileUtil.file(rootPath), -1, new FileFilter() {
			@Override
			public boolean accept(File pathname) {
				return pathname.getName().endsWith("DO.java");   //实体类结尾名
			}
		});
		
		List<String> lines = new ArrayList<>();
		files.forEach( file -> {
			List<String> oriLines = FileUtil.readLines(file, Charset.forName("utf-8"));
			for (int i = 0; i < oriLines.size(); i++) {
				String line = oriLines.get(i);
				if(line.contains("@TableName(\"") && line.contains("\")")) {
					String tmp = line.replace("@TableName(\"", "").replace("\")", "");
					lines.add(tmp);
					System.out.println(tmp);
				}
			}
		});
		
		System.out.println();
		String sqlStr = "SELECT TABLE_NAME AS 表名,TABLE_COMMENT AS 表注释 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'mall_test' and TABLE_NAME in ({});";
		if (lines.size() > 0) {
			System.out.println(StrFormatter.format(sqlStr, StrJoiner.of("','", "'", "'").append(lines)));
		}
	}
}

### 回答问题 在 IntelliJ IDEA 中,可以通过 **批量搜索和替换** 功能来将所有实体类中 `@TableName` 注解的值改为大写。以下是具体步骤和代码示例。 --- #### 方法一:使用正则达式批量修改 1. **打开全局查找与替换窗口** 在 IntelliJ IDEA 中按下快捷键 `Ctrl + Shift + R`(Windows/Linux)或 `Cmd + Shift + R`(Mac),打开全局查找与替换窗口。 2. **启用正则达式模式** 在查找框和替换框中启用正则达式支持(通常有一个 `.*` 图标示启用正则达式)。 3. **输入查找和替换规则** - 查找内容:`@TableName\("([^"]*)"\)` 解释:匹配 `@TableName("...")` 中的双引号内容,并将其捕获为分组 `$1`。 - 替换内容:`@TableName("\U$1")` 解释:`\U` 示将后续字符转换为大写,`$1` 是捕获到的原始。 4. **执行替换** 点击“全部替换”按钮,IDEA 将自动将所有实体类中的 `@TableName` 改为大写。 --- #### 示例代码 假设原始代码如下: ```java import com.baomidou.mybatisplus.annotation.TableName; @TableName("user_info") public class UserInfo { private Long id; private String name; // Getters and Setters } ``` 执行上述替换规则后,代码将变为: ```java import com.baomidou.mybatisplus.annotation.TableName; @TableName("USER_INFO") public class UserInfo { private Long id; private String name; // Getters and Setters } ``` --- ### 给出解释 #### 1. 正则达式的含义 - `@TableName\("([^"]*)"\)`: - `@TableName\(`:匹配 `@TableName("`,其中 `\(` 转义了左括号。 - `([^"]*)`:捕获双引号内的任意字符(即),并存储为分组 `$1`。 - `"\)`:匹配右括号前的双引号。 - `@TableName("\U$1")`: - `\U`:将后续字符转换为大写。 - `$1`:引用捕获到的分组内容(即原始)。 #### 2. 注意事项 - 确保项目中所实体类都遵循相同的命规范(如 `@TableName` 注解的值为小写)。 - 如果中包含特殊字符(如 `_`),正则达式仍然适用,因为 `[^"]*` 匹配任意非双引号字符。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值