锁定老帖子 主题:只有一条sql语句实现组合查询
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-30
最后修改:2010-04-30
/** * User表中的id字段 */ String ID = "id"; String AGE = "age"; /** * 用户输入的值,根据是否为空字符串实现组合查询 */ String id = String strAge1 = String strAge2 = /** * 条件判断 */ int age1; int age2; if("".equals(id)){ ID = id = "1"; } if("".equals(strAge1)){ age1= MIN; // MIN常量这里定义为0 }else{ age1 = Integer.parseInt(strAge1); } if("".equals(strAge2)){ age2 = MAX // MAX常量这里定义为150 }else{ age2 = Integer.parseInt(strAge2); } /** * sql语句 */ String sqlStr = "select * from User where"+ ID + "= '"+id+"' and"+ AGE +">= "+ age1+" and"+ AGE +"<= "+ age2;
想当初为了实现组合查询,写了n条sql语句...
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-01
额....被你雷到了..楼主
|
|
返回顶楼 | |
发表时间:2010-05-01
楼主要是女的并且长得真的是金泰熙那么漂亮我就就忍了。but你太让我伤心了。
|
|
返回顶楼 | |
发表时间:2010-05-01
不对吗~各位
|
|
返回顶楼 | |
发表时间:2010-05-02
最后修改:2010-05-02
我也是菜菜地模拟了一个Criteria类,像下面这样的调用:
/** * 模拟一个 Criteria 条件处理器。 * * @author CodingMouse * @version 1.0 * @since JDK1.5 */ public class Test { public static void main(String[] args) { Criteria ci = Criteria.select(AccountPOJO.class) .add(Restrictions.or(Restrictions.eq("accountid", 10), Restrictions.isNull("birthday"), Restrictions.like("accountname", "邓%"))) .add(Restrictions.le("accountid", 60), Restrictions.like("accountname", "周%")) .add(Restrictions.or(Restrictions.and( Restrictions.notLike("email", "%gmail.com"), Restrictions.ge("onlinecount", 10)))) .addOrder(Order.desc("accountstate"), Order.asc("onlinecount")); List<Object> modelList = ci.query(); for (Object model : modelList) { System.out.println(model); } } } 最终生成这样的SQL语句,目前还没加上别名、联接查询的支持: SELECT accountid, accountname, onlinecount, birthday, loginname, loginpassword, email, accountstate FROM account WHERE (accountid = ? OR birthday IS NULL OR accountname LIKE (?)) AND (accountid <= ? AND accountname LIKE (?)) OR (email NOT LIKE (?) AND onlinecount >= ?) ORDER BY accountstate DESC, onlinecount 所以,我也建议楼主自行封装几个类来实现SQL自动拼装和参数转换赋值。当然,如果你不用POJO,那这个思路就行不通。 |
|
返回顶楼 | |
发表时间:2010-05-02
是对的,但是可能比较基础
,并且sql没有防止注入 |
|
返回顶楼 | |
发表时间:2010-05-02
写的确实不咋的。
|
|
返回顶楼 | |
发表时间:2010-05-02
CodingMouse 写道 我也是菜菜地模拟了一个Criteria类,像下面这样的调用:
/** * 模拟一个 Criteria 条件处理器。 * * @author CodingMouse * @version 1.0 * @since JDK1.5 */ public class Test { public static void main(String[] args) { Criteria ci = Criteria.select(AccountPOJO.class) .add(Restrictions.or(Restrictions.eq("accountid", 10), Restrictions.isNull("birthday"), Restrictions.like("accountname", "邓%"))) .add(Restrictions.le("accountid", 60), Restrictions.like("accountname", "周%")) .add(Restrictions.or(Restrictions.and( Restrictions.notLike("email", "%gmail.com"), Restrictions.ge("onlinecount", 10)))) .addOrder(Order.desc("accountstate"), Order.asc("onlinecount")); List<Object> modelList = ci.query(); for (Object model : modelList) { System.out.println(model); } } } 最终生成这样的SQL语句,目前还没加上别名、联接查询的支持: SELECT accountid, accountname, onlinecount, birthday, loginname, loginpassword, email, accountstate FROM account WHERE (accountid = ? OR birthday IS NULL OR accountname LIKE (?)) AND (accountid <= ? AND accountname LIKE (?)) OR (email NOT LIKE (?) AND onlinecount >= ?) ORDER BY accountstate DESC, onlinecount 所以,我也建议楼主自行封装几个类来实现SQL自动拼装和参数转换赋值。当然,如果你不用POJO,那这个思路就行不通。 这样写sql比直接写sql还难看。你能在十秒钟内看明白是查询什么东西吗。恐怕很困难。。。这个完全是为了查询而查询了。比较汗 |
|
返回顶楼 | |
发表时间:2010-05-02
mikom_l 写道 不对吗~各位
一个原始人,拿着石斧,对着美国大兵说:“我这不是武器吗?” |
|
返回顶楼 | |
发表时间:2010-05-03
CodingMouse你不菜了,他不会你会的Hibernate^^
|
|
返回顶楼 | |