java创建实体类(get/set方法链式调用)

1.自动获取数据库表,创建实体类

/**
 * 自动获取数据库表,创建实体类
 * @since 2020.03.12
 * @author qin_myu
 */
public class DomainAutoCreate {
   
	private String tablename = "TABLE_NAME";// 表名
	private String packagename = "com.qmy.domain;";// 输出包名
	private String classname = "Domain";// 输出实体类名
	private String[] colnames; // 字段数组
	private String[] colTypes; // 字段类型数组
	private int[] colSizes; // 列名大小数组
	private boolean f_util = false; // 是否需要导入包java.util.*
	private boolean f_math = false;// 是否需要导入包java.math.*

	public static void main(String[] args) {
   
		new DomainAutoCreate();
	}

	public DomainAutoCreate() {
   
		Connection conn = DBUtil.getConnection();// 建立数据库连接
		PreparedStatement ps = null;
		ResultSetMetaData rs = null;
		String strsql = "SELECT * FROM " + tablename;
		try {
   
			ps = conn.prepareStatement(strsql);
			// ResultSet获取结果集
			ResultSet rs2 = ps.executeQuery();
			// ResultSetMetaData获取表字段及属性
			rs = rs2.getMetaData();
			int size = rs.getColumnCount();
			colnames = new String[size];
			colTypes = new String[size];
			colSizes = new int[size];
			for (int i = 0; i < rs.getColumnCount(); i++) {
   
				colnames[i] = rs.getColumnName(i + 1).toLowerCase();
				colTypes[i] = rs.getColumnTypeName(i + 1).toUpperCase();
				if (colTypes[i].equalsIgnoreCase("DATETIME") || colTypes[i].equalsIgnoreCase("DATE")
						|| colTypes[i].equalsIgnoreCase("SMALLDATETIME") || colTypes[i].equalsIgnoreCase("TIME")) {
   
					f_util = true;
				}
				if (colTypes[i].equalsIgnoreCase("MONEY") || colTypes[i].equalsIgnoreCase("DECIMAL")
						|| colTypes[i].equalsIgnoreCase("SMALLMONEY") || colTypes[i].equalsIgnoreCase("NUMERIC")) {
   
					f_math = true;
				}
				colSizes[i] = rs.getColumnDisplaySize(i + 1);
			}
			String content = parse(colnames, colTypes, colSizes, packagename);
			FileWriter fileWriter = new FileWriter(initcap(tablename.toLowerCase()) + ".java");
			PrintWriter pw = new PrintWriter(fileWriter);
			pw.println(content);
			pw.flush();
			pw.close();
		} catch (SQLException e) {
   
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
   
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
   
			try {
   
				ps.close();
				conn.close();
			} catch (SQLException e) {
   
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}

	/**
	 * 解析处理(生成实体类主体代码)
	 * 
	 * @param colNames
	 * @param colTypes
	 * @param colSizes
	 * @param packagename
	 * @return
	 */
	private String parse(String[] colNames, String[] colTypes, int[] colSizes, String packagename) {
   
		StringBuffer sb = new StringBuffer();
		// 导入包
		sb.append("package " + packagename + "\r\n\n");
		if (f_util) {
   
			sb.append("import java.util.Date;\r\n\n");
		}
		if (f_math) {
   
			sb.append("import java.math.BigDecimal;\r\n\n");
		}
		sb.append("public class " + initcap(classname) + " {\r\n");

		for (int i = 0; i < colnames.length; i++) {
   
			sb.append("\tprivate " + sqlTypeToJavaType(colTypes[i]) + " " + colnames[i] + ";\r\n");
		}
		sb.append("\n\n");
		// 生成get/set方法(链式调用)
		for 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值