论坛首页 Java企业应用论坛

SQL动态封装工具类

浏览 14732 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-18  
mwmw 写道
现在已经有很多这种util了吧,忘记叫做什么名字了。

其实用JDBC的时候,拼SQL也是很实惠的,简单明了,安全稳定, 容易检查。 但是不好管理。反正都被封装在DAO这一层。

不过楼主这样一封装,显得就fashion了很多。

ps,一个小问题,最近用substring的时候发现会有memory leak, 如果你要是在这么common的地方用的话,还是注意一点的,不然会有莫名其妙的gc的问题。





subString没有创建新的Char Array。和原有的String共有同一个Char Array。是不是这个原因导致的内存泄露?
0 请登录后投票
   发表时间:2009-10-18  
我在这里推荐我的“仓库猫”框架。
0 请登录后投票
   发表时间:2009-10-18  
如果用jdbc封装也就封装了,如果用iBatis完全不用,在xml里做判断比在代码里灵活也直观的多,话说iBatis是自带动态判断的。
0 请登录后投票
   发表时间:2010-01-15  
wgx19830922 写道
用这种形式的话是不是如果参数是带有单引号或者双引号或者其他特殊字符串的时候会有转义错误的!
是不是应该用preparestatement来进行参数的设置呢?


LZ 应该考虑使用PrepareStatement来处理,同时order by 也需要

protected List<Sort> sortList;

Sort类至少有两个属性 String field,boolea asc

andEqualTo(String field,String value)中的value定义为Object value

public String toSql(){
...
}
改为
public PrepareStatement getPrepareStatement(){
...
}

另外

createCriteria().andEqualTo("org_code", "vvv")

这里的 "org_code" 写死了,万一数据库字段发生变化,将会很难修改到处使用的 "org_code"

建议使用一些生成工具,生成一个数据库字段的static 类



public class AAAA{

public static class Table1{

   public static String org_code = "org_code";
   ...
}

public static class Table2{

...
}

}

最后,写成 createCriteria().andEqualTo(AAAA.Table1.org_code, value)

数据库字段论怎样变,org_code变成 kao,eclipse会向你举起双手说:"LZ,AAAA.Table1.org_code已经从地球上消失了!"
0 请登录后投票
   发表时间:2010-01-15  
呵呵,前几天同事问问题,我就简单给他写了个思路
new Select("select * from user").where(new Condition("col1", EQUAL,  "1"))
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics