当前位置: 移动技术网 > IT编程>网页制作>Html5 > 一个用于MyBatis的辅助页面,自动生成实体,mapper,impl,dao,注册spring,mybatis的小玩意

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

2018年11月25日  | 移动技术网IT编程  | 我要评论
[html]
<%@ 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"><p style="width: 100%;height: 100%" id="tip"></p></td> 
        </tr> 
        <tr> 
            <td valign="top">表名:<p style="width: 100%;height: 100%" id="tablename"><input name="t" type="text"></p></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";//数据库url 
string dbuser="sa";//数据库帐号 
string dbpassword="";//数据库密码 
//读取数据1 
class.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; 
//初始化2 
list<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类型    不满足条件为object 
db2java.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; 
    //读取数据2 
    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++; 
    } 
    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\" \""); 
    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> 
作者:icskee

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网