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.下载 ...
随机推荐
- Linux 本机/异机文件对比
一:提取异步机器文件 #ssh 192.168.1.2 "cat /etc/glance/glance-api.conf | grep -v '#' |grep -v ^$" 二: ...
- java中的strictfp的作用
自Java2以来,Java语言增加了一个关键字strictfp,虽然这个关键字在大多数场合比较少用,但是还是有必要了解一下. strictfp 的意思是FP-strict,也就是说精确浮点的意思.在J ...
- socket.gaierror: [Errno 11001] getaddrinfo failed
- 52、[源码]-Spring源码总结
52.[源码]-Spring源码总结 总结 一.Spring容器在启动的时候,先会保存所有注册进来的Bean的定义信息: xml注册bean: 注解注册Bean:@Service.@Component ...
- iptables 相关命令
1. 清除已有iptables规则 iptables -F iptables -X iptables -Z 2. 开放指定的端口(添加规则) iptables -A INPUT -s 127.0.0. ...
- HttpURLConnection getInputStream 400异常的解决
判断getResponseCode,当返回不是HttpURLConnection.HTTP_OK, HttpURLConnection.HTTP_CREATED, HttpURLConnection. ...
- xhEditor编辑器从word粘贴公式
我司需要做一个需求,就是使用富文本编辑器时,不要以上传附件的形式上传图片,而是以复制粘贴的形式上传图片. 在网上找了一下,有一个插件支持这个功能. WordPaster 安装方式如下: 直接使用Wor ...
- The 2019 ICPC China Nanchang National Invitational and International Silk-Road Programming Contest
目录 Contest Info Solutions A. Attack B. Polynomial E. Interesting Trip F. Sequence G. Winner H. Anoth ...
- Mybatis 向statement传入多个参数
1.一般情况下可以将多个参数放入Map,让Map作为statement的参数 public void update(@Param("fieldMap") Map<String ...
- PowerShell中汉字与ASCII码相互转换
function asc($param) { $rtn = '' $list = $param -split '' foreach ($char in $list) { if($char -ne '' ...