`
qiujiayu
  • 浏览: 170762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在JDK 1.5中实现真正面向对象形式的SQL语句3 (含有源码,代码生成工具)

    博客分类:
  • JAVA
阅读更多

      之前我发表过两篇文章,与有今天发表的东西是有关联的,因为我今天发表的东西也是从之前那个方向发展过来的。虽然现在已经没有原来的模样了,但希望有兴趣的朋友能一起学习,并给点建议。
   在JDK 1.5中实现真正面向对象形式的SQL语句 1
   在JDK 1.5中实现真正面向对象形式的SQL语句 2(含有源码,代码生成工具)

 

  
   接下来讲一下今天主要内容。
   在我的开发经验告诉我,我们在一个系统开发过程中,使用最多的SQL语句,主要就是CURD的东 西,所以我们针对每张表,我们需要写的SQL语句也是比较固定的。当然我今天发表的这个东西并不是非常完美的,通过工具生成的代码大部分是可以直接使用 的,但有些地方还是要根据实际业务,做些简单的调整(即使是hibernate生成的配置文件,我们也要花大量的时间去维护它)。
    接下来说一下设计思想:
    1、使用enum 映射数据库表结构。比如:

  1.     public  static  enum TBL_ACTION{//enum 名称,就是数据库中的表名或者视图名
  2.         ACTION_ID,//数据库字段名
  3.         MODULE_ID,
  4.         ACTION_NAME,
  5.         ACTION_REMARK;
  6.     }


     通过它我们就很容易维护SQL语句了。如果以后表名,或字段名做了更改,我们就很容易找到我们代码中,哪些地方用到了这个表,维护起来非常的方便。而且我们手写SQL语句时,在IDE下会自动提示,这样可以减少我们书写错误。
     2、缓存 CURD SQL语句:

  1.     public  static  enum TBL_ACTION{
  2.         ACTION_ID,
  3.         MODULE_ID,
  4.         ACTION_NAME,
  5.         ACTION_REMARK;
  6.         private  static  final  String  tempStr=MODULE_ID+"," +ACTION_NAME+"," +ACTION_REMARK.toString();
  7.         public  static  final  String  selectSql="SELECT " +ACTION_ID+"," +tempStr+" FROM " +TBL_ACTION.class .getSimpleName()+" " ;
  8.         public  static  final  String  insertMySql="INSERT INTO " +TBL_ACTION.class .getSimpleName()+" (" +tempStr+") VALUES (?,?,?);SELECT LAST_INSERT_ID();" ;
  9.         public  static  final  String  insertOracle="INSERT INTO " +TBL_ACTION.class .getSimpleName()+" (" +ACTION_ID+"," +tempStr+") VALUES (?,?,?,?)" ;
  10.         public  static  final  String  deleteSql="DELETE FROM " +TBL_ACTION.class .getSimpleName()+"  WHERE " +ACTION_ID;
  11.         public  static  final  String  updateSql="UPDATE " +TBL_ACTION.class .getSimpleName()+" SET " +tempStr.replaceAll(",""=?," )+"=? WHERE " +ACTION_ID+"=?" ;
  12.     }


       3、 PreparedStatement.setObject(int index,Object obj);和 CallableStatement..setObject(int index,Object obj);为我们提供了很大的方便。在生成代码的DAO 中我们会看到大量的:

  1.             parms=new  Object []{
  2.                 ......
  3.             };
  4.             res =this .update(session, sql, parms);


       4、使用泛型抽取DAO:com.commons.dao.AbstractBaseDao<O>
       5、实现分页查询:

       
  1.     /**
  2.      * 分页查询
  3.      * @param session
  4.      * @param sql
  5.      * @param minIndex
  6.      * @param maxIndex
  7.      * @param parms
  8.      * @return
  9.      */
  10.     public  PageInfo<O> listOnPages(DbSession session,String  sql,Object  [] parms,int  minIndex,int  maxIndex)


      6、现在只实现了对MySQL和Oracle之前的互相移植。因为本人比较喜欢这两个数据库。我会把源码上传上来,大家可以改源码,增加自己的想法进去。
      
应用此工具的过程
一、生成代码
1、配置数据库连接
    在conf/proxool.properties配置数据库连接信息
2、执行代码生成工具
    运行com.tools.codeengle.CodeEngle 或com.tools.codeengle.CodeUI
二、Spring 配置
    请参照spring-context.xml和businessConext.xml
三、数据库访问,具体使用方法,请参照源码中的例子。
    数据库访问主要用到以下两个类:
    com.commons.dao.DbSession;
    com.commons.database.SqlExecutor;


 

 

  • 大小: 153.8 KB
  • 大小: 201.1 KB
  • 大小: 401.7 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics