精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-25
jetever 写道 我现在还在用sqlmap 1.2版.升级有一堆的API都变了.不敢升级了.
一、说明iBATIS怪强了 二、应用不大、条件允许的话还是升级一把吧。 |
|
返回顶楼 | |
发表时间:2006-12-26
SteveGY 写道 fight_bird 写道 舍弃paginated list有点可惜,有点因噎废食的嫌疑。
ibatis的sql map已经比较成熟,应该集中精力于最佳实践的问题,需要更多的第三方IDE插件、工具,现在找个实用的脚本生成器都很困难。 脚本生成器,还是比较简单的,问题是各人的规范可能完全不一样,生成的代码可能每个人看起来都不爽。所以还不如自己根据本开发组的情况,开发一个,很简单的。 我这里直接使用单个jsp文件,慢慢积累起来的代码,一共400行,连html代码都包含了,用来生成java map对象和CRUD基本操作的sql xml语句的文本,直接在页面上输入jdbc连接url,必要的表名字,java map类名称等参数,submit以后,jdbc获得数据库Schema,解析一下,生成的代码,够用就好,一般是需要适当修改的。但毕竟提高了编码效率,省得手写很多代码,而且基本没有拼写错误之类的问题了。 实际上,我这里所有项目,从.net到java, vbscript asp都有各一个自动生成CRUD基本sql语句的自动化工具,很好用。 能否share一下看看 |
|
返回顶楼 | |
发表时间:2006-12-26
脚本生成器还是很好弄地
把数据库的元数据读一把,再搞个模板 velocity,freemarker都好使, 个人还是比较稀饭freemarker |
|
返回顶楼 | |
发表时间:2006-12-26
Ivan Li 写道 SteveGY 写道 fight_bird 写道 舍弃paginated list有点可惜,有点因噎废食的嫌疑。
ibatis的sql map已经比较成熟,应该集中精力于最佳实践的问题,需要更多的第三方IDE插件、工具,现在找个实用的脚本生成器都很困难。 脚本生成器,还是比较简单的,问题是各人的规范可能完全不一样,生成的代码可能每个人看起来都不爽。所以还不如自己根据本开发组的情况,开发一个,很简单的。 我这里直接使用单个jsp文件,慢慢积累起来的代码,一共400行,连html代码都包含了,用来生成java map对象和CRUD基本操作的sql xml语句的文本,直接在页面上输入jdbc连接url,必要的表名字,java map类名称等参数,submit以后,jdbc获得数据库Schema,解析一下,生成的代码,够用就好,一般是需要适当修改的。但毕竟提高了编码效率,省得手写很多代码,而且基本没有拼写错误之类的问题了。 实际上,我这里所有项目,从.net到java, vbscript asp都有各一个自动生成CRUD基本sql语句的自动化工具,很好用。 能否share一下看看 呵呵,实在不好意思,代码比较丑陋,生成的代码自己够用就可以了,不拿出来了。 其实,尽量减少其他环境的依赖性,因为大多数情况是用java开发web应用,所以只用jsp jdbc,其他库的关联尽量减少,而且单个jsp文件便于携带,随便往哪一个web目录下一扔就可以了(虽然话是这么说,但这个web应用程序如果没有你要的jdbc驱动也不行:D)。 主要核心就是获得DB Schema,然后,尽可以发挥了。 // 前面变量声明,从form中取值什么的省略了 Class.forName(dbDriver); con = DriverManager.getConnection(dbUrl, username, password); if(con != null) { DatabaseMetaData dbmd = con.getMetaData(); if(schemaName.length() == 0) schemaName = username; ResultSet rst = dbmd.getColumns("", schemaName, tblName, ""); ///buf = genMembers(rst); buf = new StringBuffer(); buf.append("\r\n\r\n"); // 下面的genXXXXXX函数没有给出,实在有点丑陋,一堆的buf.append("....") // autokey是一个提示,用来生成不同的sequence方法 // 例如,oracle和sybase的identity是不同的主键生成 buf.append(genInsertSQL(dbmd, rst, schemaName, tblName, dbClassname, autokey)); buf.append(genUpdateSQL(dbmd, rst, schemaName, tblName, dbClassname, autokey)); buf.append(genRetrieveByKeySql(dbmd, rst, schemaName, tblName, dbClassname, autokey)); buf.append(genDeleteSql(dbmd, rst, schemaName, tblName, dbClassname, autokey)); bufc = genClassMember(rst); bufc.append(genClassVoid(dbmd, rst, schemaName, tblName, dbClassname, javaConfigClass)); } |
|
返回顶楼 | |