自动生成PO文件"/>
JavaWeb自动生成PO文件
JavaWeb自动生成PO文件
在做javaweb中,需要建立与数据库中的表相映射的java对象也就是PO。在一个项目中往往一个数据有上百张的表,如果需要PO都要一个一个手动建立PO,这样操作起来非常麻烦也很浪费时间。
对与这种简单的重复操作就应该想办法进行封装,于是我就直接通过Java代码去自动生成项目所需的PO文件。
项目地址:
封装
主方法
private static Connection con = null;
private static ResultSet rs = null;
private static ResultSet bs = null;
private static DatabaseMetaData dma = null; //传入 Connection 与要生成PO的存放包名
public static void FoundPo(Connection conts,String Paurl) {try { con = conts;dma = con.getMetaData();//获取数据库的元数据 //将包名.转换为路径\\String Paurlnj=Paurl.replace(".", "\\");//放入src目录String path = ".\\src\\"+Paurlnj;//判断目录是否存在,不存在则创建File directory = new File(path);if(!directory.exists()){ directory.mkdirs(); //创建目录}//读取数据库的表rs = dma.getTables(null, null, null, new String[]{"TABLE"});while(rs.next()){//获取表名String bname = (String) rs.getObject("TABLE_NAME"); bname=capital(bname);//将表名首字母大写,适应命名规范String filenameTemp = path + "\\"+bname+"Po.java";String vostr = "package "+Paurl+";\nimport java.io.Serializable;\n\npublic class "+bname+"Po implements Serializable{ \n\n\tprivate static final long serialVersionUID = 1L;";String toubu = "";String read = "";String write = "";//读取表的每一列 bs = dma.getColumns(null, "%",bname, "%");while(bs.next()){ String columnName = bs.getString("COLUMN_NAME");//列名 String typeName = bs.getString("TYPE_NAME");//列的数据类型String remarks = bs.getString("REMARKS");//列的备注String ltype = typepd(typeName);//MySQL类型与java类型进行转换//拼接po代码toubu+="\n\t//-- "+remarks+" --\n\tprivate " + ltype+" "+columnName+";";read += "\n\n\tpublic" + " " + ltype + " get" + columnName+ "() {\n\t\treturn " + columnName + ";\n\t}";write += "\n\n\tpublic" + " void " + "set" + columnName + "("+ ltype + " " + columnName + ")" + "{\n\t\tthis." + columnName+ " = " + columnName + ";\n\t}";}vostr+=toubu+read+write+"\n}";//调用封装方法,生成最终po文件File file = new File(filenameTemp);try {if (!file.exists()) { file.createNewFile();writeFileContent(filenameTemp, vostr);} else {autoReplace(filenameTemp, vostr);} } catch (Exception e) {e.printStackTrace();}System.out.println("✔ "+bname+"表 PO创建成功 :"+filenameTemp);}System.out.println("\n✔ 数据库PO创建完成! ------- SetPo_XT");} catch (Exception e) {e.printStackTrace();} finally { //关闭流try { if (rs != null) {rs.close();}if (con != null) {con.close();}if (bs != null) {bs.close();}} catch (SQLException e) {e.printStackTrace();}}
}
MySQL数据类型与java数据类型转换
//常用类型,还有很多类型没判断public static String typepd(String sqltype){String jatype="";if(sqltype.equals("INT"){jatype="int";}else if(sqltype.equals("INTEGER")){ jatype="long";}else if(sqltype.equals("FLOAT")){jatype="float";}else if(sqltype.equals("DOUBLE")){jatype="double"; }else if(sqltype.equals("BIT")){jatype="boolean";}else{jatype="String";}return jatype;
}
首字母大写
表名首字母大写,适应java命名规范
public static String capital(String ostr){String nestr=ostr.toUpperCase();String sd=nestr.substring(0,1);String newstr=sd+ostr.substring(1);return newstr;
}
使用实例
//引入封装好的SetPo_XT包
import com.xt.jdbc.SetPo_XT;
//链接数据库
conn= DriverManager.getConnection(url, user, password);
//调用SetPo_XT的FoundPo()
SetPo_XT.FoundPo(conn, "com.xt.po");
控制器实时输出状态
执行完成后刷新项目目录
PO自动生成成功
这是自动生成的PO代码
更多推荐
JavaWeb自动生成PO文件
发布评论