使用NutzDao进行复杂SQL条件查询
NutzDao中支持对数据的多种复杂查询,用户可以很方便的查询到想得到的数据。
使用Cnd对象按条件查询
org.nutz.dao.Dao接口的query方法的第二个参数提供了SQL条件查询功能,这个参数是org.nutz.dao.Cnd对象,它是org.nutz.dao.Condition接口的实现类。该类中包含两个方法:Cnd.wrap()和Cnd.where()方法。
Cnd.wrap()方法
该方法中提供一个字符串参数,该字符串参数就是你的SQL语句where之后的查询条件,这样SQL语句的查询条件就以直接硬编码的方式存在。其代码如下:
ListuserList = dao.query(User.class, Cnd.wrap("uname like '%ang%' and uage=20"), null);
Cnd.where()方法
该方法包含三个字符串参数,第一个参数是数据表中所对应的字段,第二个参数是SQL语句的查询条件关键字或者符号,第三个参数是SQL语句的参数;其代码如下:
ListuserList = dao.query(User.class, Cnd.where("uname", "LIKE","y%"), null);
还可以使用Cnd.where()方法进行嵌套查询,这里用到了NutzDao中的另一个对象,ExpGroup,使用该对象构建连个SQL条件表达式作为参数传到Cnd.where()方法中。如下:
// 使用ExpGroup,Cnd.where()嵌套表达式,进行复杂查询
ExpGroup group1 = Cnd.exps("uname", "LIKE", "%y").and("uage", ">", "11");
ExpGroup group2 = Cnd.exps("uname", "LIKE", "%c%").and("uage", "<", "30");
Condition cnd = Cnd.where(group1).or(group2);
List userList = dao.query(User.class, cnd , null);
Useruser = new User();
所以今后在使用NutzDao进行复杂查询时,应该使用Cnd对象进行查询。