一、来源

  在写代码时总是遇到下面这种情况:

        Account account = new Account();
account.setId();
account.setGmtCreate();
account.setGmtUpdate();
account.setUsername();
account.setPassword();
account.setPhone();
account.setEmail();
account.setRoleIds();
account.setType();
account.setAccountNonExpired();
account.setAccountNonLocked();
account.setAccountExpiredDatetime();
account.setLastPasswordResetDatetime();
account.setTokenNonExpired();
account.setVerificationCode();
account.setVerificationCodeExpiredDatetime();
account.setEnabled();
account.setActive();
account.setState();

  写起来还费时,又容易遗漏,还特烦。于是抱着解决实际问题,搞了一个自动根据实体生成的工具,不是很好,以后再慢慢改进。

二、代码

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner; public class Quick {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
List<String> entityList = new LinkedList<>();
String className = ""; String nextStr = null;
while (scanner.hasNext() && !(nextStr = scanner.next()).equals("!!")) {
entityList.add(nextStr);
}
for (int i= 0;i<entityList.size();i++){
if (entityList.get(i).equals("public")){
if (i+2<entityList.size()&&entityList.get(i+1).equals("class")){ className = entityList.get(i+2);
break;
}
}
}
if (className==""){
System.out.println("Entity decode fail!");
System.exit(-1);
} List<String> setMethodList = new LinkedList<>();
for (String str:entityList){
if (str.startsWith("set")){
str = str.substring(0,str.indexOf("("));
setMethodList.add(str);
}
} //格式输出
String lowerCaseClassName = toLowerCaseFirstOne(className);
System.out.println(className+" "+lowerCaseClassName+" = new "+className+"();");
for (String method:setMethodList){
System.out.println(lowerCaseClassName+"."+method+"();");
}
}
//首字母转小写
public static String toLowerCaseFirstOne(String s){
if(Character.isLowerCase(s.charAt(0)))
return s;
else
return (new StringBuilder()).append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString();
}
//首字母转大写
public static String toUpperCaseFirstOne(String s){
if(Character.isUpperCase(s.charAt(0)))
return s;
else
return (new StringBuilder()).append(Character.toUpperCase(s.charAt(0))).append(s.substring(1)).toString();
}
}

三、格式要求

  在IDea格式化之后输入,Ctrl+shift+F

Java根据实体快速生成对象的更多相关文章

  1. Java代码实体类生成SQL语句(Java实体类转数据库)

    有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可. 下载:ht ...

  2. JAVA通过实体类生成数据库查询语句(驼峰命名规则)

    import java.io.IOException; import java.lang.reflect.Field; import java.util.HashMap; import java.ut ...

  3. java web 实体类生成

    工具下载地址:https://download.csdn.net/download/g342105676/10813246

  4. Java反射获取类和对象信息全解析

    反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题. 在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了. 获取类对象 Class.f ...

  5. flutter 快速生成Widget

    快速生成对象 List.generate(20, (i){ return Text("$i"); }), 快速生成Widget ListView.builder( itemCoun ...

  6. VS快速生成JSON数据格式对应的实体

          有固定好的Json数据格式,你还在手动敲对应的实体吗?有点low了!步入正题,这是一个json字符串,先去验证JSON数据格式(http://www.bejson.com/)如下: { & ...

  7. VS中快速生成json数据格式对应的实体

    JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标注. {} 双 ...

  8. Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)

    (一)Eclipse中的快捷键:  ctrl+shift+f自动整理选择的java代码 alt+/ 生成无参构造器或者提升信息 alt+shift+s+o 生成带参构造 ctrl+shift+o快速导 ...

  9. mybatis-generator-core快速生成实体类和Mapper

    日常使用Mybatis少不了和实体类和 Mapper 打交道.除了我们手写来实现,还可以使用 mybatis-generator-core 来快速生成 实体类和 Mapper. 步骤如下: 1.下载 ...

随机推荐

  1. python高级特性-sorted()

    1.数字排序 >>> sorted([1,-12,13,-4],key=abs) [1, -4, -12, 13] 2.字符串排序 按ASCII排序 默认情况下,对字符串排序,是按照 ...

  2. Spring Boot 项目在 IntelliJ IDEA 中配置 DevTools 实现热部署(macOS 系统)

    要配置的内容: 1.Preference -> Build, Execution, Deployment -> Complier -> Build project automatic ...

  3. 网站添加logo图片

    网站添加log图片 第一种方法 这里使用的图片一般为16*16大小的图片 <link rel="shortcut icon" href="http://xxx.xx ...

  4. sql server 存储过程---游标的循环

    sqlserver中的循环遍历(普通循环和游标循环) sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  5. 学到了林海峰,武沛齐讲的Day18 迭代

    x='hello' gxr=iter(x) gxr=x.__iter__() print(next(gxr)) print(gxr.__next__()) iter()===__iter__ next ...

  6. ashx 图片上传

    为了方便多出调用图片上传方法       首先我们将图片上传方法抽离出来 创建ashx 一个新的方法 using System; using System.Collections.Generic; u ...

  7. BZOJ 2839: 集合计数 广义容斥

    在一个 $N$ 个元素集合中的所有子集中选择若干个,且交集大小为 $k$ 的方案数. 按照之前的套路,令 $f[k]$ 表示钦定交集大小为 $k$,其余随便选的方案数. 令 $g[k]$ 表示交集恰好 ...

  8. jQuery获取元素的方式

    一.通过id选择器获取并操作元素--------$("#id属性的值") <script src="http://libs.baidu.com/jquery/1.1 ...

  9. C++类中静态数据成员MAP如何初始化

    conv_xxx.hpp class convolution { ... ... typedef std::map<int, std::string> ConvDtMap; static ...

  10. 1059 Prime Factors(25 分)

    Given any positive integer N, you are supposed to find all of its prime factors, and write them in t ...