读书人

一个用于MyBatis的辅助页面用于生成

发布时间: 2012-08-11 20:50:31 作者: rapoo

一个用于MyBatis的辅助页面,用于生成实体和mapper的sql

自己写的一个小玩意,方便开发 ....

主要是用SQL获得数据信息,然后解析各种print

驱动就自己去找吧,SQL是基于M$的

使用方式就是加个参数?t=表名

效果图

一个用于MyBatis的辅助页面,用于生成实体和地图per的sql

源码

<%@ 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{\nprivate 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";elsets[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("\npublic "+ts[i][0]+" get"+ts[i][2]+"(){\nreturn "+ts[i][1]+";\n}\n\npublic void set"+ts[i][2]+"("+ts[i][0]+" "+ts[i][1]+") {\nthis."+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>


读书人网 >SQL Server

热点推荐