论坛首页 Java企业应用论坛

只有一条sql语句实现组合查询

浏览 5207 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2010-05-03  
  可能楼主正在学习阶段,应该鼓励。
  虽然这个语句存在很多问题,确实是比较基础的东西。
  继续努力。
0 请登录后投票
   发表时间:2010-05-03  
呵呵,思路挺正常啊。只是没有避免注入攻击而已
一眼能看懂多好啊

查询器适合用来组装复杂查询,也就是平常你总和用户忽悠所说的"高级查询",呵呵
0 请登录后投票
   发表时间:2010-05-03  
谢谢楼上各位~

是我自己没考虑完全

目前刚开始接触SSH框架,搞得自己晕乎乎的~
0 请登录后投票
   发表时间:2010-05-03   最后修改:2010-05-03
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,那这个思路就行不通。



add(Restrictions.le("accountid", 60),  
17.            Restrictions.like("accountname", "周%")) 
可以改成這樣
add(Restrictions.le("accountid", 60),  
17.            Restrictions.like("accountname", "周",MatchMode.END))
0 请登录后投票
   发表时间:2010-05-03  
最近为项目写了一个单表简单查询:
Where where = new Where("name = ? and age > ?","zhangsan",23);
List<User> u = wrapper.select(User.class,where)
感觉这种方式比用Criteria 更加一目了然查询条件,而且结果实体类进行自动映射转换。
0 请登录后投票
   发表时间:2010-05-03  
楼主先接受接受SQL吧,别着急SSH
0 请登录后投票
   发表时间:2010-05-03  
个人有自己的习惯和公司要求吧
本人不太喜欢用hibernate写出连自己都看不懂的sql,这样的sql效率如何控制呢。也许是本人的hibernate比较菜
0 请登录后投票
   发表时间:2010-05-03  
sarin 写道
楼主先接受接受SQL吧,别着急SSH


感觉自己的基础的确不太牢固~但学校有开SSH这门课
0 请登录后投票
论坛首页 Java企业应用版

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