到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comwww.javaresearch.org无关,不对该信息负责.通过http://www.javaresearch.org/article/74318.htm访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
在JDK 1.5中实现真正面向对象形式的SQL语句 2(含有源码,代码生成工具)
作者:zjy780108 来源:www.javaresearch.org  发布时间:2007-10-12 13:22:49.517


在JDK 1.5中实现真正面向对象形式的SQL语句 1

在这里做了些改进:
1:实现IDbTable,让系统知道它是数据库表映射类;
2:实现toString()方法,以便数据表中字段更改;
3:如果表有主键,则可以返回主键字段getIdCol();
4:如果有单一主键(不是复合主键)且非自动增长型的,可以通过idGenerator()获取ID生成的方法。
5:因为表的insert语句在整个系统中到那里都是一样的,所以在映射类中我添加了一个getInsertSQL()函数,来获取添加数据函数,以提高开发效率及减少维护工作量。

使用enum 映射数据库表结构

  1. package com.myorm.test;
  2. import com.tables.models.IDbTable;
  3. import com.tables.models.SqlType;
  4. public enum UserUser implements IDbTable{
  5.     /**
  6.      * <b>说明:</b>用户名<br/>
  7.      * <b>类型:</b>varchar<br/>
  8.      * <b>长度:</b>10<br/>
  9.      * <b>精度:</b>0<br/>
  10.      * <b>是否允许空</b>:否<br/>
  11.      */
  12.     username{
  13.         /**
  14.          * 如果字段名做了更改,只要更改此函数的返回值就可以了
  15.          */
  16.         public String toString(){
  17.             return "User_Name";
  18.         }
  19.         public SqlType getSqlType()
  20.         {
  21.             return SqlType.STRING;
  22.         }
  23.     },
  24.     id
  25.     {
  26.         public SqlType getSqlType()
  27.         {
  28.             return SqlType.STRING;
  29.         }
  30.     };
  31.     /**
  32.      * 获取主键列
  33.      * @return 返回主键列
  34.      */
  35.     public static UserUser getIdCol()
  36.     {
  37.         return id;
  38.     }
  39.     /**
  40.      * ID 生成器
  41.      * 在MySQL中如果用UUID()生成主键,那返回"UUID()";
  42.      * 在Oracle中如果用SEQUENCE生成主键,返回"SEQUENCE_NAME.NEXTVAL"
  43.      * @return
  44.      */
  45.     public static String idGenerator()
  46.     {
  47.         return "uuid()";
  48.     }    
  49.     public static String getInsertSQL()
  50.     {
  51.         StringBuffer insert=new StringBuffer();
  52.         insert.append("insert into ").append(UserUser.class.getSimpleName());
  53.         insert.append(" (").append(id).append(",").append(username).append(") values (");
  54.         insert.append(idGenerator()).append(",?)");
  55.         return insert.toString();
  56.     }
  57. }


附件中有一完整的代码,也有代码生成工具,做得不是很完美,不过可以大家一起学习研究。
本人还想为了实现系统可移植(更换数据库),对数据库的常用的函数也做了一下封装(com.myorm.function.DbFunction),通过com.myorm.function.FunctionProxy返回具体的DbFunction。
com.tables.utils.SimpleSqlBuilder是一个简单的SQL构建器。

用到的JAR包有:
commons-logging.jar,proxool-0.9.0RC3.jar,log4j-1.2.14.jar,mysql-connector-java-5.0.7-bin.jar,ojdbc14.jar,jtds-1.2.2.jar
请自行添加
开发环境:
JDK 1.6 U2
eclipse 3.3

附件:src.zip(25K) 

如有问题请与本人联系:
MSN:qiu_jia_yu@hotmail.com
email:qiu_jia_yu@hotmail.com

 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读