一、来源

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

        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. css全局定位内容图片自动居中

    最近在做一个资讯站点时候,因为采集的数据,图片不居中,导致界面很不美观,所以需要全局定义下图片输出时候进行居中. .content img { max-width:800px;_width:expre ...

  2. 创建型模式(一) 单例模式(Singleton)

    一.动机(Motivation) 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性.以及良好的效率. 如何绕过常规的构造器,提供一种机制来保证一个类只 ...

  3. 使用SpringTask 进行Java定时任务开发

    (我这里的案例 是模拟 将项目包放到tomcat里面运行 ) 新建一个Java Web的Maven项目....... 此过程省略... 项目结构如图: 1.pom.xml 配置 <?xml ve ...

  4. python - django (auth 的使用)

    # """ 1. 创建用户: python manage.py createsuperuser 2. from django.contrib import auth au ...

  5. Codeforces Round #597 (Div. 2) A. Good ol' Numbers Coloring

    链接: https://codeforces.com/contest/1245/problem/A 题意: Consider the set of all nonnegative integers: ...

  6. Maximum Subarray II

    Given an array of integers, find two non-overlapping subarrays which have the largest sum. The numbe ...

  7. ssh 免密码登录 单机和集群配置

    1.在主机上(A)生成密钥对 ssh-keygen -t rsa -P '' #在A主机上执行,生成密钥对 直接按enter键 执行以下命令,会在  ~/.ssh/ 目录生成 id_rsa  id_r ...

  8. spark的广播变量

    直接上代码:包含了,map,filter,persist,mapPartitions等函数 String master = "spark://192.168.2.279:7077" ...

  9. 最短路--Bellman-Ford

    Bellman-Ford 贝尔曼-福特 算法思想 贝尔曼-福特算法(英语:Bellman–Ford algorithm),求解单源最短路径问题的一种算法,由理查德·贝尔曼 和 莱斯特·福特 创立的.它 ...

  10. hdu 5452

    无意中看到这道题 没读懂英文题面 百度题解寻找题面 看到: #include <iostream> #include <cstdio> #include <algorit ...