JR 精品文章 - 在JDK 1.5中实现真正面向对象形式的SQL语句 2(含有源码,代码生成工具)
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » 服务器及中间件 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
在JDK 1.5中实现真正面向对象形式的SQL语句 2(含有源码,代码生成工具)
xiaoyuer 原创   更新:2007-09-07 15:43:55  版本: 2.0   

在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

版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     13       0
作者其它文章: 作者全部文章
评论人:zjy780108 发表时间: Mon Sep 10 12:38:32 CST 2007
不错的东西,希望能写的更强

这个文章共有 1 条评论
主题: 使用Tomcat-5.5.20配置数据库连接池详细介绍 上一篇文章
返回文章列表 返回〔服务器及中间件〕
下一篇文章 主题: 在JDK 1.5中实现真正面向对象形式的SQL语句


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号