读书人

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

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

一个用于MyBatis的辅助页面,自动生成实体,mapper,impl,dao,注册spring,mybatis的小玩意

在《一个用于MyBatis的辅助页面,用于生成实体和mapper的sql》之后,发现自己更懒了,于是有了如标题一样的玩意

<%@ page language="java" import="java.util.*,java.sql.*,java.io.*" pageEncoding="UTF-8"%><!DOCTYPE html><html><body><form action=""><table><tr><td>src路径:<input name="p" type="text" value="C:/Users/Administrator/Documents/MyEclipse/XXXX/src/" size="60"><input type="submit"></td><td rowspan="2" valign="top"><div style="width: 100%;height: 100%" id="tip"></div></td></tr><tr><td valign="top">表名:<div style="width: 100%;height: 100%" id="tableName"><input name="t" type="text"></div></td></tr></table></form><%/**********************************************************///自定义说明:如果想自己修改,可以调用的信息,注意作用范围,确保包正确,必须先准生成包,使用前设定好src路径,数据库驱动,数据库配置,参数,模板//String[][] ts[][0]类型,1字段,2大写开头字段//String bt表名,大写开头//String t表名,小写开头//String p项目src路径//String gz参数段,多用于构造例如String a,String b,int c...//String gzq字段,多用于mapper例如[id],[name],[code]...//String gzi字段参数,多用于mapper,例如#{id},#{name},#{code}...//String gzu字段参数,多用于mapper,例如[id]=#{id},[name]=#{name},[code]=#{code}...//*****段落,作为diy帮助//初始化1//读取数据库1//判断//初始化2//读取数据库2别忘记了驱动,那玩意我才不去集成//实体类建议不要用原型int,double这样的类,因为他们无法赋值null,虽然封装类java.lang.*,例如Integer,Double这样的会慢点,但是可以满足SQL的null//mapper这里写sql模板//impl这里写impl模板//dao这里写dao模板//spring注入spring模板//mybatis注入mybatis模板//说明/**********************************************************///初始化String dbDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//数据库驱动String dbUrl="jdbc:sqlserver://127.0.0.1:1433;databaseName=DB";//数据库URLString dbUser="sa";//数据库帐号String dbPassword="";//数据库密码//读取数据1Class.forName(dbDriver).newInstance();Connection conn = DriverManager.getConnection(dbUrl, dbUser,dbPassword);Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet rs = stmt.executeQuery("SELECT name FROM sysobjects WHERE xtype = 'U' AND status >= 0");String str="";while(rs.next()){String name=rs.getString("name");str+="<input type=\"checkbox\" value=\""+name+"\" name=\"ts\">"+name+"<br/>";}%><script type="text/javascript">document.getElementById("tableName").innerHTML='<%=str%>';</script><%//判断String p=request.getParameter("p");String[] tss=request.getParameterValues("ts");if(tss==null||p==null||p=="")return;//初始化2List<String> pa=new ArrayList<String>();pa.add("unit");//实体类包pa.add("mapper");//mapper包pa.add("service");//impl包pa.add("service");//dao包pa.add("configuration/spring.xml");//spring路径pa.add("configuration/myBatis.xml");//myBatis路径List<String[]> db2java=new ArrayList<String[]>();//数据库转实体类的类型设定[0]为SQL类型,[1]为java类型不满足条件为Objectdb2java.add(new String[]{"bit","Boolean"});db2java.add(new String[]{"nvarchar","String"});db2java.add(new String[]{"numeric","Double"});db2java.add(new String[]{"int","Integer"});db2java.add(new String[]{"datetime","java.util.Date"});String tipStr="";for(int ti=0;ti<tss.length;ti++){String t=tss[ti];HashMap[] r = (HashMap[]) null;//读取数据2int 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++;}String bt=t.substring(0,1).toUpperCase()+t.substring(1);//实体类文件File file = new File(p+pa.get(0)+"/"+bt+".java");if(file.exists())file.delete();FileWriter fw=new FileWriter(file);BufferedWriter bw=new BufferedWriter(fw);bw.write("package "+pa.get(0)+";\r\n\n");bw.write("public class "+bt+" implements java.io.Serializable{\r\n");bw.write("private static final long serialVersionUID=1L;\r\n");String[][] ts=new String[r.length][3];for(int i=0;i<r.length;i++){ts[i][0]="Object";for(String[] temp :db2java)if(r[i].get("type").equals(temp[0]))ts[i][0]=temp[1];ts[i][1]=r[i].get("column").toString();ts[i][2]=ts[i][1].substring(0,1).toUpperCase()+ts[i][1].substring(1);bw.write(""+ts[i][0]+" "+ts[i][1]+";\r\n");}for(int i=0;i<r.length;i++){bw.write("\r\n");bw.write("public "+ts[i][0]+" get"+ts[i][2]+"(){\r\n");bw.write("return "+ts[i][1]+";\r\n");bw.write("}\r\n");bw.write("\r\n");bw.write("public void set"+ts[i][2]+"("+ts[i][0]+" "+ts[i][1]+") {\r\n");bw.write("this."+ts[i][1]+" ="+ts[i][1]+";\r\n");bw.write("}\r\n");}bw.write("public "+bt+"(){\r\n");bw.write("}\r\n");String gz="";for(int i=0;i<r.length;i++)gz+=","+ts[i][0]+" "+ts[i][1];bw.write("public "+bt+"("+gz.substring(1)+"){\r\n");for(int i=0;i<r.length;i++)bw.write("this."+ts[i][1]+"="+ts[i][1]+";\r\n");bw.write("}\r\n");bw.write("}");bw.flush();//mapper文件String gzq="",gzi="",gzu="";for(int i=0;i<r.length;i++){gzq+="["+ts[i][1]+"],";gzi+="#{"+ts[i][1]+"},";gzu+="["+ts[i][1]+"]"+"=#{"+ts[i][1]+"},";}gzq=(gzq+",").replace(",,", "");gzi=(gzi+",").replace(",,", "");gzu=(gzu+",").replace(",,", "");file = new File(p+pa.get(1)+"/"+bt+".xml");if(file.exists())file.delete();fw=new FileWriter(file);bw=new BufferedWriter(fw);bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");bw.write("<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n");bw.write("<mapper namespace=\""+bt+"\">\r\n");bw.write("<cache/>\r\n");bw.write("<select id=\"select"+bt+"ByRid\" resultType=\""+bt+"\" parameterType=\"java.lang.String\">\r\n");bw.write("SELECT "+gzq+" FROM ["+t+"] WHERE [enable]=1 AND [rid]='${value}'\r\n");bw.write("</select>\r\n");bw.write("<select id=\"select"+bt+"\" resultType=\""+bt+"\">\r\n");bw.write("SELECT "+gzq+" FROM ["+t+"] WHERE [enable]=1\r\n");bw.write("</select>\r\n");bw.write("<select id=\"select"+bt+"Query\" resultType=\""+bt+"\" parameterType=\"java.lang.String\">\r\n");bw.write("SELECT "+gzq+" FROM ["+t+"] WHERE [enable]=1 AND ${value}\r\n");bw.write("</select>\r\n");bw.write("<insert id=\"insert"+bt+"\" parameterType=\""+bt+"\">\r\n");bw.write("INSERT INTO ["+t+"] ("+gzq+")VALUES("+gzi+")\r\n");bw.write("</insert>\r\n");bw.write("<update id=\"update"+bt+"\" parameterType=\""+bt+"\">\r\n");bw.write("UPDATE ["+t+"] SET "+gzu+" WHERE [rid]=#{rid}\r\n");bw.write("</update>\r\n");bw.write("<delete id=\"delete"+bt+"\">\r\n");bw.write("DELETE ["+t+"] WHERE [enable]=0\r\n");bw.write("</delete>\r\n");bw.write("</mapper>");bw.flush();//Impl文件file = new File(p+pa.get(2)+"/"+bt+"Impl.java");if(file.exists())file.delete();fw=new FileWriter(file);bw=new BufferedWriter(fw);bw.write("package "+pa.get(2)+";\r\n");bw.write("\r\n");bw.write("import java.util.List;\r\n");bw.write("import org.springframework.stereotype.Service;\r\n");if(!pa.get(2).equals(pa.get(0)))bw.write("import "+pa.get(0)+"."+bt+";\r\n");bw.write("@Service(\""+bt+"Impl\")\r\n");bw.write("public class "+bt+"Impl extends org.mybatis.spring.support.SqlSessionDaoSupport implements "+(pa.get(2).equals(pa.get(3))?"":pa.get(3)+".")+bt+"Dao {\r\n");bw.write("public "+bt+" select"+bt+"ByRid(String rid) {\r\n");bw.write("return ("+bt+")getSqlSession().selectList(\"select"+bt+"ByRid\",rid);\r\n");bw.write("}\r\n");bw.write("\r\n");bw.write("@SuppressWarnings(\"unchecked\")\r\n");bw.write("public List<"+bt+"> select"+bt+"(){\r\n");bw.write("return getSqlSession().selectList(\"select"+bt+"\");\r\n");bw.write("}\r\n");bw.write("\r\n");bw.write("@SuppressWarnings(\"unchecked\")\r\n");bw.write("public List<"+bt+"> select"+bt+"Query(String query){\r\n");bw.write("return getSqlSession().selectList(\"select"+bt+"Query\",query);\r\n");bw.write("}\r\n");bw.write("\r\n");bw.write("public int insert"+bt+"("+bt+" "+t+") {\r\n");bw.write("return getSqlSession().insert(\"insert"+bt+"\","+t+");\r\n");bw.write("}\r\n");bw.write("\r\n");bw.write("public int update"+bt+"("+bt+" "+t+") {\r\n");bw.write("return getSqlSession().update(\"update"+bt+"\","+t+");\r\n");bw.write("}\r\n");bw.write("\r\n");bw.write("public int delete"+bt+"() {\r\n");bw.write("return getSqlSession().delete(\"delete"+bt+"\");\r\n");bw.write("}\r\n");bw.write("}");bw.flush();//dao文件file = new File(p+pa.get(3)+"/"+bt+"Dao.java");if(file.exists())file.delete();fw=new FileWriter(file);bw=new BufferedWriter(fw);bw.write("package "+pa.get(3)+";\r\n");bw.write("\r\n");bw.write("import java.util.List;\r\n");bw.write("import org.springframework.transaction.annotation.Transactional;\r\n");if(!pa.get(3).equals(pa.get(0)))bw.write("import "+pa.get(0)+"."+bt+";\r\n");bw.write("\r\n");bw.write("@Transactional\r\n");bw.write("public interface "+bt+"Dao {\r\n");bw.write(""+bt+" select"+bt+"ByRid(String rid);\r\n");bw.write("\r\n");bw.write("List<"+bt+"> select"+bt+"();\r\n");bw.write("\r\n");bw.write("List<"+bt+"> select"+bt+"Query(String query);\r\n");bw.write("\r\n");bw.write("int insert"+bt+"("+bt+" "+t+");\r\n");bw.write("\r\n");bw.write("int update"+bt+"("+bt+" "+t+");\r\n");bw.write("\r\n");bw.write("int delete"+bt+"();\r\n");bw.write("}");bw.flush();//spring文件List<String> lw=new ArrayList<String>();file = new File(p+pa.get(4));boolean f1=false;if(file.exists()){FileReader fr=new FileReader(file);BufferedReader br=new BufferedReader(fr);while(br.ready())lw.add(br.readLine());if(file.exists())file.delete();fw=new FileWriter(file);bw=new BufferedWriter(fw);for(int i=0;i<lw.size()-1;i++){if(lw.get(i).equals("    <bean id=\""+bt+"Impl\" class=\""+pa.get(3)+"."+bt+"Impl\">"))f1=true;fw.write(lw.get(i)+"\r\n");}if(!f1){bw.write("    <bean id=\""+bt+"Impl\" class=\""+pa.get(3)+"."+bt+"Impl\">\r\n");bw.write("        <property name=\"sqlSessionFactory\" ref=\"sqlSessionFactory\"/>\r\n");bw.write("    </bean>\r\n");}bw.write(lw.get(lw.size()-1));bw.flush();}//myBatis文件lw.clear();file = new File(p+pa.get(5));boolean f2=false;if(file.exists()){FileReader fr=new FileReader(file);BufferedReader br=new BufferedReader(fr);while(br.ready())lw.add(br.readLine());file.delete();fw=new FileWriter(file);bw=new BufferedWriter(fw);for(int i=0;i<lw.size()-2;i++){if(lw.get(i).equals("<typeAlias alias=\""+bt+"\" type=\""+pa.get(0)+"."+bt+"\"/>"))f2=true;fw.write(lw.get(i)+"\r\n");}if(!f2)bw.write("<typeAlias alias=\""+bt+"\" type=\""+pa.get(0)+"."+bt+"\"/>\r\n");bw.write(lw.get(lw.size()-2)+"\r\n");bw.write(lw.get(lw.size()-1));bw.flush();}bw.close();fw.close();tipStr+="<br/>";tipStr+="已经生成:<br/>";tipStr+="<br/>";tipStr+="    实体类:<br/>";tipStr+="    "+pa.get(0)+"."+bt+".java{<br/>";tipStr+="    字段...<br/>";tipStr+="    "+bt+"(){}<br/>";tipStr+="    "+bt+"(所有字段)<br/>";tipStr+="    }<br/>";tipStr+="<br/>";tipStr+="    mapper,dao,impl:<br/>";tipStr+="    select"+bt+"ByRid(String 表id)<br/>";tipStr+="    select"+bt+"<br/>";tipStr+="    select"+bt+"Query(String 条件)<br/>";tipStr+="    insert"+bt+"(实体)<br/>";tipStr+="    delete"+bt+"<br/>";tipStr+="    update"+bt+"(实体)<br/>";if(f1||f2){tipStr+="<br/>";tipStr+="    <font style=\"color: red\">已注册"+(f1?"spring,":"")+(f2?"mybaits":"")+"</font>";}}%><script type="text/javascript">document.getElementById("tip").innerHTML='<%=tipStr%>';</script></body></html>




读书人网 >软件架构设计

热点推荐