业务实体类属性拷贝-代码生成器

背景

代码开发中一般会定义一个接口的对象,一个数据库的实体映射对象。当对象中的属性比较多的时候,两个类属性的拷贝使用beanUtils比较耗时,自己写方法一个一个属性去拷贝又嫌麻烦,这个小工具自动生成类属性拷贝的方法,代码很简单,能提高一些开发的效率

代码

public class GenerateCopyDataMethodUtil {
	public static void main(String[] args) {
		generateCopyDataMethod(UserVo.class, UserDo.class);
	}
	
	public static void generateCopyDataMethod(Class<?> destClass,Class<?> sourceClass) {
		String destName = destClass.getSimpleName();
		String destNameL = toLowerCaseFirstOne(destName);
		String sourceName = sourceClass.getSimpleName();
		String sourceNameL = toLowerCaseFirstOne(sourceName);
		Field[] destFields = destClass.getDeclaredFields();
		StringBuilder methodBuilder = new StringBuilder();
		methodBuilder.append("private void copyData(");
		methodBuilder.append(destName);
		methodBuilder.append(" ");
		methodBuilder.append(destNameL);
		methodBuilder.append(",");
		methodBuilder.append(sourceName);
		methodBuilder.append(" ");
		methodBuilder.append(sourceNameL);
		methodBuilder.append(") {\n");
		for (Field field:destFields) {
			methodBuilder.append("\t");
			methodBuilder.append(destNameL);
			methodBuilder.append(".set");
			methodBuilder.append(toUpperCaseFirstOne(field.getName()));
			methodBuilder.append("(");
			methodBuilder.append(sourceNameL);
			methodBuilder.append(".get");
			methodBuilder.append(toUpperCaseFirstOne(field.getName()));
			methodBuilder.append("()");
			methodBuilder.append(");\n");
		}
		methodBuilder.append("}");
		System.out.println(methodBuilder.toString());
	}
	
	
	
	//首字母转小写
	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();
	}
	
	public static class UserVo{
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public Integer getAge() {
			return age;
		}
		public void setAge(Integer age) {
			this.age = age;
		}
		String name;
		Integer age;
	}
	
	public static class UserDo{
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public Integer getAge() {
			return age;
		}
		public void setAge(Integer age) {
			this.age = age;
		}
		public Date getCretaedDate() {
			return cretaedDate;
		}
		public void setCretaedDate(Date cretaedDate) {
			this.cretaedDate = cretaedDate;
		}
		String name;
		Integer age;
		Date cretaedDate;
	}
}

运行main方法就可以生成一个属性拷贝的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值