小工具可以从http://qixiaorui.blog.chinajavaworld.com/entry/9356/0/获得
  商业业务逻辑开发不仅要实现接口的内容,而且还要完成对数据库的所有表的基本操作,为了节省开发时间,这里我们将利用一个自动编码工具,该工具将自动生成对系统所有表的四个基本操作:插入、修改、删除和查询。 
该工具的潜在规则的解释以表SBSSubject为例: public int insertToTsbssubject(Vector v){} 
public int updateTsbssubjectByID(long id,Vector v){} 
public int deleteTsbssubjectByID(long id){} 
public Vector getTsbssubjectInfoByID(long id){} Vector里存放一条记录 
public Vector getTsbssubjectInfo(){} Vector里存放子Vector   按照规定,每个表将有五个基本操作被实现。如果系统有16张表,这五个基本操作的和就是一个很大的数字(代码将近3000行,有82K之多)。要是我们每次都把精力集中到这些基本操作的实现上,我们将耗费掉很大的精力,所以让电脑来帮助我们完成这些小工作还算是一个明智的选择。 
该工具目前只支持以下数据类型: 
 mediumint 
 int 
 varchar 
 text 
 longtext 
且数据表定义必须以mediumint类型的ID字段开头! 
以下是运行界面图: 
该工具实现了两种功能:为表格设计基本操作相关的函数,为表格模型映射相关类。 1、与特定表有关的基本操作函数 以新闻的附件表sbsarticleattach为例,在c:\1.txt中生成的代码如下:   /**
   * 表-sbsarticleattach(ID,msgID,name,displayName)
   * 操作:插入一条记录
   * 入口参数:Vector,包含了所有字段的集合
   * 出口参数: int,-1表示插入失败
   * 代码编写:CodeGenerateFromMySQL
   */
  public int insertToTsbsarticleattach(Vector v){
    int ret=0;
  
    MDBClass mdb=new MDBClass();
  
    String sql="insert into sbsarticleattach values("+
                  ((Long)v.elementAt(0)).longValue()+","+
                  ((Long)v.elementAt(1)).longValue()+","+
                  "'"+(String)v.elementAt(2)+"',"+
                  "'"+(String)v.elementAt(3)+"'"+
                  ")";
    try{
      ret=mdb.executeUpdate(sql);
      mdb.closeAll();
    }catch(Exception ex){
      System.out.println(ex.toString());
    }
    return ret;
  }
  
  /**
   * 表-sbsarticleattach(ID,msgID,name,displayName)
   * 操作:删除一条记录
   * 入口参数:id,记录号
   * 出口参数: int,-1表示删除失败
   * 代码编写:CodeGenerateFromMySQL
   */
  public int deleteTsbsarticleattachByID(long id){
  ...... 
当然,表间关系的维护还需要我们自己从代码里实现。所以,与表间关系相关的所有操作(如删除一条全文基本信息需要删除其相关的全文信息、评论信息、图片信息、附件信息等)还需要我们自己在代码里进行修改。 2、几个公共函数。 另外,该工具还实现了两个辅助函数的自动编码,这两个函数可以帮助我们在插入记录前获得可用的编号值。以下是这生成的这两个函数:     /**
    *  获取可用记录的编号
    *  入口:String sTable:表名
    *  出口:long id:编号
    *  注意:表中必须定义mediumint类型的字段ID,且为第一个
    *  作者:CodeGenerateFromMySQL
    */
   public long getAvailableID(String sTable){
     long ret=0;
     long lngTmp=0;
     Vector v=new Vector();
   
     MDBClass mdb=new MDBClass();
   
     String sql="select ID from sTable";
     try{
       ResultSet rs=mdb.executeQuery(sql);
       while(rs.next()){
         lngTmp=rs.getLong("ID");
         v.addElement(new Long(lngTmp));
       }
       rs.close();
   
       long total=v.size();    
       for(long i=1;i<total+1;i++){
         int flag=0;
         for(int j=0;j<v.size();j++){
           lngTmp=((Long)v.elementAt(j)).longValue();
           if(i==lngTmp){
             flag=1;
             break;
           }
         }
         if(flag==0){
           ret=i;
           break;
         }
       }
       mdb.closeAll();
     }catch(Exception ex){
       System.out.println(ex.toString());
     }
   
     return ret;
   
   }
   
   /**
    *  获取新记录的编号
    *  入口:String sTable:表名
    *  出口:long id:编号
    *  注意:表中必须定义mediumint类型的字段ID,且为第一个
    *  作者:CodeGenerateFromMySQL
    */
   public long getNewID(String sTable){
     long ret=0;
     long lngTmp=0;
   
     MDBClass mdb=new MDBClass();
   
     String sql="select ID from sTable "+
               "order by ID desc";
     try{
       ResultSet rs=mdb.executeQuery(sql);
       if(rs.next()){
         lngTmp=rs.getLong("ID");
       }
       ret=lngTmp+1;
   
       rs.close();
       mdb.closeAll();
     }catch(Exception ex){
       System.out.println(ex.toString());
     }
   
     return ret;
   }
   3、表格模型映射类   该工具不仅可以实现对表的操作的方法代码,还能生成针对表实体的一个从表到类的映射。还是以新闻的附件表sbsarticleattach为例,自动生成的类为SBSTsbsarticleattach.java,代码如下:  /**
 * 实体模型
 * SBSTsbsarticleattach 
 * 功能:建立从表格到类的一个实体映射
 * 作者:CodeGenerateFromMySQL
 */
 
package ql.wims;         //!!!包的名字在界面的Package处接收用户定义
 
import java.io.*;
import java.util.Vector;
 
public class SBSTsbsarticleattach implements Serializable{
  long ID;         //!!!黑体中的表前缀在界面的Prefix处接收用户输入
  long msgID;
  String name;
  String displayName;
 
  public SBSTsbsarticleattach(long _p0,long _p1,String _p2,String _p3){
    this.ID=_p0;
    this.msgID=_p1;
    this.name=_p2;
    this.displayName=_p3;
  }
  public long getID(){
    return this.ID;
  }
  public void setID(long _p0){
    this.ID=_p0;
  }
  public long getMsgID(){
    return this.msgID;
  }
  public void setMsgID(long _p1){
    this.msgID=_p1;
  }
  public String getName(){
    return this.name;
  }
  public void setName(String _p2){
    this.name=_p2;
  }
  public String getDisplayName(){
    return this.displayName;
  }
  public void setDisplayName(String _p3){
    this.displayName=_p3;
  }
 
  public String toString(){
return ""+ID;        // 这里可以根据实际情况修改,比如这里应该更改为
                    // return ""+name
  }
}