减少工作量,简单代码生成器

原因:我在开发一个简单的mvc架构的系统时(不用struts和ejb),.发现对于简单的表实现增删改操作比较简单,无非就是谢几个方法几个sql,表单提交一些数据,来完成.但是,如果表的字段过多,如上百个,甚至更多.处理起来很繁琐,主要繁琐点在于:

1.学插入语句的sql,insert语句,是在不能手写.

2,更新操作的sql也是长的要命

3,数据查询处理,给数据结构类(struts中的actionform,ejb中的实体bean)赋值语句.不能手写.

4,最要命的页面中添加或修改页面提交页(如果没有使用useBean的参数全部匹配),全用

request.getParameter(“name“);来处理的话,更是死人.

解决方法:让代码来生成这些代码,

实现方案:我们都知道,我们数据库中的每个表,都会需要一个数据结构类来保存数据,着个数据结构类和表的结构基本一至,这个结构一般也是生产的,在jb中或其他ide中都提供生产方法.,在生产的时候我们做一点注意,就是保正属性名字和表中字段的名字一致.我们利用这个结构类来生产我们需要的代码.

过程:

1.假如结构类的内容如下(必须按下列格式,在jb中生成的就是这种形式,其他IDE也差不多):

private long id;
  private String com_code=“111“;
  private float e7;
  private float e8;
  private float e9;
  private float e10;

.............

2.我们对该数据进行过虑,其实我们需要的只有,type和name.我们只需要解析这个文件,提出没一行中的type和name,这样就可以生成我们需要的代码.

3.意思应该将清楚了吧.至于下面的代码,就不用看了,当时写的,很乱,但是能工作.现在也懒的再重构了.其中的aa.txt就是上面数据结构类的内容.输出的结构是再控制台打印.bb.txt没有用到.:)

说白了,其实也是垃圾一堆.没有什么技术含量,用到的无法是一个截取字符串的操作.:) :)

使用结合参考:http://blog.csdn.net/shaokun305/archive/2004/08/01/57794.aspx

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 乐开工作室</p>
 * @author 陈少坤
 * @version 1.0
 */

import java.io.*;

public class CodeMaker {

 

  public CodeMaker() {
  }
  public static void main(String[] args) {
    CodeMaker codeMaker1 = new CodeMaker();
    System.out.println("//");
    codeMaker1.get();
    codeMaker1.set();
    codeMaker1.getInsertSql();
    codeMaker1.getUpdateSql();
    codeMaker1.getSumSql();
  }


  /**
   * 一个提页面的获取数据的代码生成。
   */
  public void  get(){
    String path="c://aa.txt";
    String path1="c://bb.txt";

    java.io.BufferedReader bin=null;
    java.io.BufferedWriter bout=null;
    try {
      bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
      bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }

    if(bin!=null){
      String aa=null;
      try {
        while((aa=bin.readLine())!=null){
          //System.out.println("aa==="+aa);
          int begin=aa.indexOf("private");
          int end=aa.indexOf(";");
          if(begin==-1)
            break;
          String bb=aa.substring(begin+8,end);
          String[] cc=bb.split(" ");
          if(cc!=null){
            String c1=cc[0];
            String c2=cc[1];
            if(c2.indexOf("=")!=-1){
              c2=c2.substring(0,c2.indexOf("="));
            }
            //System.out.println("c1="+c1);
            // System.out.println("c2="+c2);
            String aa1=c2.substring(0,1).toUpperCase();
            String c22=aa1+c2.substring(1);

            if(c1.equals("String")){
              System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
              System.out.println("xxx.set"+c22+"(request.getParameter(/""+c2+"/"));");
            }

            if(c1.equals("long")){
              System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
              System.out.println("xxx.set"+c22+"(Long.parseLong(request.getParameter(/""+c2+"/")));");
            }

            if(c1.equals("float")){
              System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
              System.out.println("xxx.set"+c22+"(Float.parseFloat(request.getParameter(/""+c2+"/")));");
            }

            if(c1.equals("int")){
              System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
              System.out.println("xxx.set"+c22+"(Integer.parseInt(request.getParameter(/""+c2+"/")));");
            }

            if(c1.equals("double")){
              System.out.println("if(request.getParameter(/""+c2+"/")!=null)");
              System.out.println("xxx.set"+c22+"(Double.parseDouble(request.getParameter(/""+c2+"/")));");
            }
          }
          aa=null;
        }
        System.out.println("//");
        bin.close();
        bout.close();
      }
      catch (IOException ex) {
        ex.printStackTrace();
      }
    }
  }

  /**
   * 给数据结构类赋值的函数。
   */
  public void  set(){
    String path="c://aa.txt";
    String path1="c://bb.txt";

    java.io.BufferedReader bin=null;
    java.io.BufferedWriter bout=null;
    try {
      bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
      bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }

    if(bin!=null){
      String aa=null;
      try {
        while((aa=bin.readLine())!=null){
          //System.out.println("aa==="+aa);
          int begin=aa.indexOf("private");
          int end=aa.indexOf(";");
          if(begin==-1)
            break;
          String bb=aa.substring(begin+8,end);
          String[] cc=bb.split(" ");
          if(cc!=null){
            String c1=cc[0];
            String c2=cc[1];
            if(c2.indexOf("=")!=-1){
              c2=c2.substring(0,c2.indexOf("="));
            }
            //System.out.println("c1="+c1);
            // System.out.println("c2="+c2);
            String aa1=c2.substring(0,1).toUpperCase();
            String c22=aa1+c2.substring(1);

            if(c1.equals("String")){
              System.out.println("xxx.set"+c22+"(rs.getString(/""+c2+"/"));");
            }

            if(c1.equals("long")){
              System.out.println("xxx.set"+c22+"(rs.getLong(/""+c2+"/"));");
            }

            if(c1.equals("float")){
              System.out.println("xxx.set"+c22+"(rs.getFloat(/""+c2+"/"));");
            }

            if(c1.equals("int")){
              System.out.println("xxx.set"+c22+"(rs.getInt(/""+c2+"/"));");
            }

            if(c1.equals("double")){
              System.out.println("xxx.set"+c22+"(rs.getDouble(/""+c2+"/"));");
            }
          }
          aa=null;
        }
        System.out.println("//");
        bin.close();
        bout.close();
      }
      catch (IOException ex) {
        ex.printStackTrace();
      }
    }
  }

 

  public void getInsertSql(){
    String path="c://aa.txt";
    String path1="c://bb.txt";

    int count=0;
    String sql="insert into *****(";
    String para="{";


    java.io.BufferedReader bin=null;
    java.io.BufferedWriter bout=null;
    try {
      bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
      bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }

    if(bin!=null){
      String aa=null;
      try {
        while((aa=bin.readLine())!=null){
          //System.out.println("aa==="+aa);
          int begin=aa.indexOf("private");
          int end=aa.indexOf(";");
          if(begin==-1)
            break;
          count++;//计数,看看需要多少个?来补充sql字符串
          String bb=aa.substring(begin+8,end);
          String[] cc=bb.split(" ");
          if(cc!=null){
            String c1=cc[0];
            String c2=cc[1];
            if(c2.indexOf("=")!=-1){
              c2=c2.substring(0,c2.indexOf("="));
            }
            //System.out.println("c1="+c1);
            // System.out.println("c2="+c2);
            String aa1=c2.substring(0,1).toUpperCase();
            String c22=aa1+c2.substring(1);
            //
            sql+=c2+",";

            if(c1.equals("String")){
              para+="/"String/",xxx.get"+c22+"(),";
            }

            if(c1.equals("long")){
              para+="/"long/",/"/"+xxx.get"+c22+"(),";
            }

            if(c1.equals("float")){
              para+="/"float/",/"/"+xxx.get"+c22+"(),";
            }

            if(c1.equals("int")){
              para+="/"int/",/"/"+xxx.get"+c22+"(),";
            }

            if(c1.equals("double")){
              para+="/"double/",/"/"+xxx.get"+c22+"(),";
            }
          }
          aa=null;
        }//while循环

        para=para.substring(0,para.length()-1)+"};";
        sql=sql.substring(0,sql.length()-1);
        sql+=") values(";
        for(int i=0;i
          sql+="?,";
        }
        sql=sql.substring(0,sql.length()-1)+")";
        ///
        System.out.println("String sql=/""+sql+"/";");
        System.out.println("Object[] para="+para);


        System.out.println("//");
        bin.close();
        bout.close();
      }
      catch (IOException ex) {
        ex.printStackTrace();
      }
    }

 

  }

  /**
   * 获得updage的sql语句
   */
  public void getUpdateSql(){
    String path="c://aa.txt";
    String path1="c://bb.txt";

    int count=0;
    String sql="update ***** set ";
    String para="{";


    java.io.BufferedReader bin=null;
    java.io.BufferedWriter bout=null;
    try {
      bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
      bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }

    if(bin!=null){
      String aa=null;
      try {
        while((aa=bin.readLine())!=null){
          //System.out.println("aa==="+aa);
          int begin=aa.indexOf("private");
          int end=aa.indexOf(";");
          if(begin==-1)
            break;
          count++;//计数,看看需要多少个?来补充sql字符串
          String bb=aa.substring(begin+8,end);
          String[] cc=bb.split(" ");
          if(cc!=null){
            String c1=cc[0];
            String c2=cc[1];
            if(c2.indexOf("=")!=-1){
              c2=c2.substring(0,c2.indexOf("="));
            }
            //System.out.println("c1="+c1);
            // System.out.println("c2="+c2);
            String aa1=c2.substring(0,1).toUpperCase();
            String c22=aa1+c2.substring(1);
            //
            sql+=c2+"=?,";

            if(c1.equals("String")){
              para+="/"String/",xxx.get"+c22+"(),";
            }

            if(c1.equals("long")){
              para+="/"long/",/"/"+xxx.get"+c22+"(),";
            }

            if(c1.equals("float")){
              para+="/"float/",/"/"+xxx.get"+c22+"(),";
            }

            if(c1.equals("int")){
              para+="/"int/",/"/"+xxx.get"+c22+"(),";
            }

            if(c1.equals("double")){
              para+="/"double/",/"/"+xxx.get"+c22+"(),";
            }
          }
          aa=null;
        }//while循环

        para=para.substring(0,para.length()-1)+"};";
        sql=sql;


        sql=sql.substring(0,sql.length()-1)+" where id=?";
        ///
        System.out.println("String sql=/""+sql+"/";");
        System.out.println("Object[] para="+para);

        System.out.println("//");

        bin.close();
        bout.close();
      }
      catch (IOException ex) {
        ex.printStackTrace();
      }
    }

  }


  /**
   * 获得统计所有字段的函数
   */
  public void getSumSql(){
    String path="c://aa.txt";
    String path1="c://bb.txt";

    int count=0;
    String sql="select ";


    java.io.BufferedReader bin=null;
    java.io.BufferedWriter bout=null;
    try {
      bin=new java.io.BufferedReader(new java.io.FileReader(new File(path)));
      bout=new java.io.BufferedWriter(new java.io.FileWriter(new File(path1)));
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }

    if(bin!=null){
      String aa=null;
      try {
        while((aa=bin.readLine())!=null){
          //System.out.println("aa==="+aa);
          int begin=aa.indexOf("private");
          int end=aa.indexOf(";");
          if(begin==-1)
            break;
          count++;//计数,看看需要多少个?来补充sql字符串
          String bb=aa.substring(begin+8,end);
          String[] cc=bb.split(" ");
          if(cc!=null){
            String c1=cc[0];
            String c2=cc[1];
            if(c2.indexOf("=")!=-1){
              c2=c2.substring(0,c2.indexOf("="));
            }
            //System.out.println("c1="+c1);
            // System.out.println("c2="+c2);
            String aa1=c2.substring(0,1).toUpperCase();
            String c22=aa1+c2.substring(1);
            //
            sql+="sum("+c2+") as "+c2+",";

          }
          aa=null;
        }//while循环


        sql=sql.substring(0,sql.length()-1);
        sql+=" from  ****  where  com_code<>'/"+com_code+/"'and sum_year=/"+year+/" and is_submit=1";

        ///
        System.out.println("String sql=/""+sql+"/";");

        System.out.println("//");

        bin.close();
        bout.close();
      }
      catch (IOException ex) {
        ex.printStackTrace();
      }
    }
  }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值