自己写的一个小玩意,方便开发 ....
主要是用SQL获得数据信息,然后解析各种print
驱动就自己去找吧,SQL是基于M$的
使用方式就是加个参数?t=表名
效果图
源码
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%><!DOCTYPE html><html><body><%//开始判断是否执行String t=request.getParameter("t");//表名if(t==null||t==""){ out.println("参数?t=&p使用\nt是表\n复制到实体类里可以用ctrl+shilf+f来自动设定格式"); return;}//读取hash数据Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=", "sa","");Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);HashMap[] r = (HashMap[]) null;try { ResultSet rs; int iRowNum; r = (HashMap[])null; iRowNum = 0; int iColCnt = 0; rs = stmt.executeQuery("select a.name as [column],b.name as type from syscolumns a,systypes b where a.id=object_id('"+ t+ "') and a.xtype=b.xtype and b.name!='sysname' order by a.id,a.colorder"); ResultSetMetaData MetaData = rs.getMetaData(); iColCnt = MetaData.getColumnCount(); if (rs.next()){ rs.last(); r = new HashMap[rs.getRow()]; rs.beforeFirst(); } while (rs.next()){ r[iRowNum] = new HashMap(); for (int j = 0; j < iColCnt; j++){ String szColName = MetaData.getColumnName(j + 1); String szColValue = rs.getString(szColName); if (szColValue == null) szColValue = ""; r[iRowNum].put(szColName, szColValue); } iRowNum++; }}catch (SQLException e){ e.printStackTrace(); throw e;}finally{ conn.close();}//执行数据解析String bt=t.substring(0,1).toUpperCase()+t.substring(1);//表名,大写开头%>实体类<br><textarea rows="20" cols="100" readonly="readonly"><%out.println("package unit;\n\npublic class "+bt+" implements java.io.Serializable{\n private static final long serialVersionUID=1L;");String[][] ts=new String[r.length][3];//[][0]类型,1字段,2大写开头字段for(int i=0;i<r.length;i++){ if(r[i].get("type").equals("bit")) ts[i][0]="Boolean"; else if(r[i].get("type").equals("nvarchar")) ts[i][0]="String"; else if(r[i].get("type").equals("numeric")) ts[i][0]="Double"; else ts[i][0]="java.util.Date"; ts[i][1]=r[i].get("column").toString(); ts[i][2]=ts[i][1].substring(0,1).toUpperCase()+ts[i][1].substring(1); out.println(" "+ts[i][0]+" "+ts[i][1]+";");}for(int i=0;i<r.length;i++) out.println("\n public "+ts[i][0]+" get"+ts[i][2]+"(){\n return "+ts[i][1]+";\n }\n\n public void set"+ts[i][2]+"("+ts[i][0]+" "+ts[i][1]+") {\n this."+ts[i][1]+" ="+ts[i][1]+";\n }");out.println(" public "+bt+"(){\n }\n");String gz="";for(int i=0;i<r.length;i++) gz+=","+ts[i][0]+" "+ts[i][1];out.println(" public "+bt+"("+gz.substring(1)+"){");for(int i=0;i<r.length;i++) out.println(" this."+ts[i][1]+"="+ts[i][1]+";");out.print(" }\n}"); %></textarea><br>mapper<br><%gz="";String gzi="",gzu="";for(int i=0;i<r.length;i++){ gz+="["+ts[i][1]+"],"; gzi+="#{"+ts[i][1]+"},"; gzu+="["+ts[i][1]+"]"+"=${"+ts[i][1]+"},";}gz=(gz+",").replace(",,", "");gzi=(gzi+",").replace(",,", "");gzu=(gzu+",").replace(",,", "");%><textarea rows="20" cols="100"><%out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");out.println("<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">");out.println("<mapper namespace=\""+bt+"\">");out.println(" <cache/>");out.println(" <select id=\"select"+bt+"\" resultType=\""+bt+"\">");out.println(" SELECT "+gz+" FROM ["+t+"]");out.println(" </select>");out.println(" <insert id=\"insert"+bt+"\" parameterType=\""+bt+"\">");out.println(" INSERT INTO ["+t+"] ("+gz+")VALUES("+gzi+")");out.println(" </insert>");out.println(" <update id=\"update"+bt+"\" parameterType=\""+bt+"\">");out.println(" UPDATE ["+t+"] SET "+gzu+" WHERE [rid]=#{rid}");out.println(" </update>");out.println(" <delete id=\"delete"+bt+"\" parameterType=\"java.lang.String\">");out.println(" DELETE ["+t+"] WHERE [rid]='${value}'");out.println(" </delete>");out.println("</mapper>");%></textarea></body></html>