Java根据实体快速生成对象
一、来源
在写代码时总是遇到下面这种情况:
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根据实体快速生成对象的更多相关文章
- Java代码实体类生成SQL语句(Java实体类转数据库)
有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可. 下载:ht ...
- JAVA通过实体类生成数据库查询语句(驼峰命名规则)
import java.io.IOException; import java.lang.reflect.Field; import java.util.HashMap; import java.ut ...
- java web 实体类生成
工具下载地址:https://download.csdn.net/download/g342105676/10813246
- Java反射获取类和对象信息全解析
反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题. 在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了. 获取类对象 Class.f ...
- flutter 快速生成Widget
快速生成对象 List.generate(20, (i){ return Text("$i"); }), 快速生成Widget ListView.builder( itemCoun ...
- VS快速生成JSON数据格式对应的实体
有固定好的Json数据格式,你还在手动敲对应的实体吗?有点low了!步入正题,这是一个json字符串,先去验证JSON数据格式(http://www.bejson.com/)如下: { & ...
- VS中快速生成json数据格式对应的实体
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标注. {} 双 ...
- Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)
(一)Eclipse中的快捷键: ctrl+shift+f自动整理选择的java代码 alt+/ 生成无参构造器或者提升信息 alt+shift+s+o 生成带参构造 ctrl+shift+o快速导 ...
- mybatis-generator-core快速生成实体类和Mapper
日常使用Mybatis少不了和实体类和 Mapper 打交道.除了我们手写来实现,还可以使用 mybatis-generator-core 来快速生成 实体类和 Mapper. 步骤如下: 1.下载 ...
随机推荐
- python高级特性-sorted()
1.数字排序 >>> sorted([1,-12,13,-4],key=abs) [1, -4, -12, 13] 2.字符串排序 按ASCII排序 默认情况下,对字符串排序,是按照 ...
- Spring Boot 项目在 IntelliJ IDEA 中配置 DevTools 实现热部署(macOS 系统)
要配置的内容: 1.Preference -> Build, Execution, Deployment -> Complier -> Build project automatic ...
- 网站添加logo图片
网站添加log图片 第一种方法 这里使用的图片一般为16*16大小的图片 <link rel="shortcut icon" href="http://xxx.xx ...
- sql server 存储过程---游标的循环
sqlserver中的循环遍历(普通循环和游标循环) sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student
- 学到了林海峰,武沛齐讲的Day18 迭代
x='hello' gxr=iter(x) gxr=x.__iter__() print(next(gxr)) print(gxr.__next__()) iter()===__iter__ next ...
- ashx 图片上传
为了方便多出调用图片上传方法 首先我们将图片上传方法抽离出来 创建ashx 一个新的方法 using System; using System.Collections.Generic; u ...
- BZOJ 2839: 集合计数 广义容斥
在一个 $N$ 个元素集合中的所有子集中选择若干个,且交集大小为 $k$ 的方案数. 按照之前的套路,令 $f[k]$ 表示钦定交集大小为 $k$,其余随便选的方案数. 令 $g[k]$ 表示交集恰好 ...
- jQuery获取元素的方式
一.通过id选择器获取并操作元素--------$("#id属性的值") <script src="http://libs.baidu.com/jquery/1.1 ...
- C++类中静态数据成员MAP如何初始化
conv_xxx.hpp class convolution { ... ... typedef std::map<int, std::string> ConvDtMap; static ...
- 1059 Prime Factors(25 分)
Given any positive integer N, you are supposed to find all of its prime factors, and write them in t ...