java 实体类生成工具_简单的生成实体类的java工具类

package util;

import java.io.*;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* @author bin.zhao

* @description 读取文件中的字段, 生成符合我们使用的对应的实体类,命名规则小驼峰式(nameCode),生成加下划线的@JSONField(name = "name_code"),其他不变

* 注意data.txt文件的第一行是要生成的class文件的名字,剩下的是文件的字段,目前只支持String类型,后续扩展各种类型

* 目前默认读取工程目录下的data.txt文件,可根据需要改变读取路径

* 生成的java文件也在工程目录下,可以根据需要调整

* @date 2020/4/24

*/

public class JavaToPoJo {

private static List attres = new ArrayList<>();

private static StringBuilder sb = new StringBuilder();

public static void main(String[] args) throws IOException {

//获取字段构成的列表

getAttrs();

//创建文件;

createFile();

//生成文件

writerFile();

System.out.println(attres);

}

private static void writerFile() throws IOException {

BufferedWriter bw = new BufferedWriter(new FileWriter(attres.get(0)+".java"));

bw.write(sb.toString(),0,sb.length());

bw.flush();

bw.close();

}

//创建java实体类

private static void createFile() {

//生成头部

sb.append("import com.alibaba.fastjson.annotation.JSONField;\r\nimport java.io.Serializable;\r\n\r\npublic class "+ attres.get(0) + " implements Serializable{\r\n");

sb.append("\tprivate static final long serialVersionUID = 1L;\r\n\r\n");

//生成所有的属性

createAttributes();

//生成所有的get/set方法

createMethods();

//结尾

sb.append("}");

}

//创建set/get方法

private static void createMethods() {

for (int i = 1; i < attres.size(); i++) {

sb.append("\tpublic String get"+toUpFirstLetter(attres.get(i))+"(){\r\n");

sb.append("\t\treturn "+attres.get(i)+";\r\n\t}\r\n\r\n");

sb.append("\tpublic void set"+toUpFirstLetter(attres.get(i))+"(String "+attres.get(i)+"){\r\n");

sb.append("\t\tthis."+attres.get(i)+" = "+attres.get(i)+";\r\n\t}\r\n\r\n");

}

}

//首字母大写

private static String toUpFirstLetter(String s) {

char[] chars = s.toCharArray();

if (chars[0] >= 'a' && chars[0] <= 'z'){

chars[0] = (char)(chars[0]-32);

}

return new String(chars);

}

//创建所有的属性

private static void createAttributes() {

for (int i = 1; i < attres.size(); i++) {

sb.append("\t@JSONField(name = \""+subAttribute(attres.get(i))+"\")\r\n");

sb.append("\tprivate String "+ attres.get(i) + ";\r\n\r\n");

}

}

//根据大写首字母对字段进行分割并加下划线处理

private static String subAttribute(String name){

//创建一个匹配模式

Pattern p = Pattern.compile("[A-Z]");

//创建使用指定的正则模式的匹配器

Matcher m = p.matcher(name);

while(m.find()){//如果匹配上了返回true

//根据匹配上的字符进行替换,加上_并转换为小写

name = name.replaceFirst(m.group(),"_"+m.group().toLowerCase());

}

return name;

}

//按行读取文件内容,组成一个字段list

private static void getAttrs() throws IOException {

BufferedReader reader = new BufferedReader(new FileReader("data.txt"));

String s = "";

while(true){

s = reader.readLine();

if (s==null) break;

attres.add(s);

}

reader.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值