|
在JDK 1.5中实现真正面向对象形式的SQL语句 1
在这里做了些改进: 1:实现IDbTable,让系统知道它是数据库表映射类; 2:实现toString()方法,以便数据表中字段更改; 3:如果表有主键,则可以返回主键字段getIdCol(); 4:如果有单一主键(不是复合主键)且非自动增长型的,可以通过idGenerator()获取ID生成的方法。 5:因为表的insert语句在整个系统中到那里都是一样的,所以在映射类中我添加了一个getInsertSQL()函数,来获取添加数据函数,以提高开发效率及减少维护工作量。
使用enum 映射数据库表结构
- package com.myorm.test;
-
- import com.tables.models.IDbTable;
- import com.tables.models.SqlType;
-
- public enum UserUser implements IDbTable{
- /**
- * <b>说明:</b>用户名<br/>
- * <b>类型:</b>varchar<br/>
- * <b>长度:</b>10<br/>
- * <b>精度:</b>0<br/>
- * <b>是否允许空</b>:否<br/>
- */
- username{
- /**
- * 如果字段名做了更改,只要更改此函数的返回值就可以了
- */
- public String toString(){
- return "User_Name";
- }
- public SqlType getSqlType()
- {
- return SqlType.STRING;
- }
- },
- id
- {
- public SqlType getSqlType()
- {
- return SqlType.STRING;
- }
- };
- /**
- * 获取主键列
- * @return 返回主键列
- */
- public static UserUser getIdCol()
- {
- return id;
- }
- /**
- * ID 生成器
- * 在MySQL中如果用UUID()生成主键,那返回"UUID()";
- * 在Oracle中如果用SEQUENCE生成主键,返回"SEQUENCE_NAME.NEXTVAL"
- * @return
- */
- public static String idGenerator()
- {
- return "uuid()";
- }
- public static String getInsertSQL()
- {
- StringBuffer insert=new StringBuffer();
- insert.append("insert into ").append(UserUser.class.getSimpleName());
- insert.append(" (").append(id).append(",").append(username).append(") values (");
- insert.append(idGenerator()).append(",?)");
- return insert.toString();
- }
- }
附件中有一完整的代码,也有代码生成工具,做得不是很完美,不过可以大家一起学习研究。 本人还想为了实现系统可移植(更换数据库),对数据库的常用的函数也做了一下封装(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
|