当前位置: 代码迷 >> SQL >> 一个用于MyBatis的辅助页面,用于生成实体和地图per的sql
  详细解决方案

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

热度:220   发布时间:2016-05-05 14:18:14.0
一个用于MyBatis的辅助页面,用于生成实体和mapper的sql

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

主要是用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>


  相关解决方案