Java论坛网»Java技术»有关于通用查询,想了很久,但没有想通,大家进来讨论讨论(Hibernate)

有关于通用查询,想了很久,但没有想通,大家进来讨论讨论(Hibernate)

问?:
tbUser表有字段userId(主键),userName,password
我现想写一个通用的查询方法。
public void queryUser(TbUser user) {

}

请注意,我传入的是TbUser类型(这个类型是对应tbUser表中的getter/setter方法),来进行查询,而这个函数可以实现多种查询方法。比如说:
//以userId=1来查询
TbUser user = new TbUser();
user.setUserId(1);
queryUser(user); //相当于以from TbUser user where user.userId=1 来查询.
同理,如果是user.setUserName("abc"),还是user.setPassword("xyz")都是以 where userName或者password来查询。

//以userId=1 && userName="abc" 来查询
TbUser user = new TbUser();
user.setUserId(1);
user.setUserName("abc");
queryUser(user); //相当于以from TbUser user where user.userId=1 and user.userName='abc'

//以userName="abc" && password="xyz" 来查询
TbUser user = new TbUser();
user.setUserName("abc");
user.setPassword("xyz");
queryUser(user); //相当于以from TbUser user where user.userName='abc' and user.password='xyz'

//以userId=1 && password="xyz"来查询
代码略

//以userId=1 && userName="abc" && password="xyz" 三者来查询
代码略

基于以上的通用查询方法,别人使用你的queryUser(TbUser user)真的是很方便啊,因为别人使用你这个查询方法的时候,避免了跟业务逻辑打交道,不用关心细节。
可惜的是,偶水平有限,写不出这样的通用查询。请教大虾们给一个思路。
有源码贴出来,那最好不过啦。
答!: 1:
没人顶,自己先顶一下。
答!: 2:
这个功能我做过,其实你还可以做得更加通用,就是不但是User类,对于其它的什么Admin,之类也一样适用,用java的refect来现实,

myQuery(Object obj,Class cls,String fieldNames[])

流程是,你先得到Object,然后根据第二个参数class来把obj强制转型,然后根据fieldNames[]数组中的值,通过refect,从obj中找到相关的setter,getter,把这些属性值得到,再构造SQL语句。


答!: 3:
是HQL语句,写错。


相关JAVA教程:
Axis的Handler问题。
Struts框架下如何在jsp中显示数据库中查询到的数据?
Struts框架下如何在jsp中显示数据库中查询到的数据?
哪个高手可以提供一个J2EE的开源OA
如果谁能帮我解决此问题,将送人民币50元至对方卡号
获得路径问题
讨论 做gui和做j2ee 的前景 和 前途
关于tomcat中ThreadPool中一段代码的疑问,恳请大家解答!
<html:text 显示的问题,请高人指点
Hibernate+struts问题--异常忘指教源码我贴出来了
ireport导出excel
请各位高手,介绍一些关于学习J2EE的好书