package org.nutz.dao.nst.test;
import java.util.List;
import org.junit.Test;
import org.nutz.dao.Cnd;
import org.nutz.dao.test.DaoCase;
/**
* TODO fix: 这个类的testcase不完整,无法运行
* @author wendal
*
*/
public abstract class DaoNstTest extends DaoCase {
@Test
public void eqTest() {
List<A> list = dao.query(A.class, Cnd.where("aaa", "=", Cnd.nst(dao).select("aaa", A.class,
Cnd.where("aid", "=", Cnd.nst(dao).select("aid", A.class, Cnd.where("aname", "=", "a1"))))));
System.out.println(list);
}
@Test
public void notEqTest() {
List<A> list = dao.query(A.class, Cnd.where("aid", "<>", Cnd.nst(dao).select("aid", A.class,
Cnd.where("aid", "not in", Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", ">", "1"))))));
System.out.println(list);
}
@Test
public void otherSymbolTest() {
List<A> list1 = dao.query(A.class, Cnd.where("aid", ">", Cnd.nst(dao).select("aid", A.class,
Cnd.where("aid", "not in", Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", ">", "1"))))));
System.out.println(list1);
List<A> list2 = dao.query(A.class, Cnd.where("aid", ">=", Cnd.nst(dao).select("aid", A.class,
Cnd.where("aid", "not in", Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", ">", "1"))))));
System.out.println(list2);
List<A> list3 = dao.query(A.class, Cnd.where("aid", "<", Cnd.nst(dao).select("aid", A.class,
Cnd.where("aid", "not in", Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", ">", "1"))))));
System.out.println(list3);
List<A> list4 = dao.query(A.class, Cnd.where("aid", "<=", Cnd.nst(dao).select("aid", A.class,
Cnd.where("aid", "not in", Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", ">", "1"))))));
System.out.println(list4);
}
@Test
public void likeTest() {
List<A> list1 = dao.query(A.class,
Cnd.where("aaa", "like", Cnd.nst(dao).select("aaa", A.class, Cnd.where("aid", "=", 999))));
System.out.println(list1);
List<A> list2 = dao.query(A.class,
Cnd.where("aaa", "not like", Cnd.nst(dao).select("aaa", A.class, Cnd.where("aid", "=", 999))));
System.out.println(list2);
}
@Test
public void inTest() {
List<A> list1 = dao.query(A.class, Cnd.where("aid", "in", Cnd.nst(dao).select("aid", A.class, Cnd.where("aaa",
"not in", Cnd.nst(dao).select("distinct aaa", A.class, Cnd.where("aaa", "=", "a1"))))));
System.out.println(list1);
List<A> list2 = dao.query(A.class, Cnd.where("aid", "not in", Cnd.nst(dao).select("aid", A.class, Cnd
.where("aaa", "not in", Cnd.nst(dao).select("distinct aaa", A.class, Cnd.where("aaa", "=", "a1"))))));
System.out.println(list2);
}
@Test
public void existsTest() {
List<A> list1 = dao.query(A.class, Cnd.where("", "exists", Cnd.nst(dao).select("aid", A.class, Cnd.where("aaa",
"not in", Cnd.nst(dao).select("distinct aaa", A.class, Cnd.where("aaa", "=", "a1"))))));
System.out.println(list1);
List<A> list2 = dao.query(A.class, Cnd.where("", "not exists", Cnd.nst(dao).select("aid", A.class, Cnd
.where("aaa", "not in", Cnd.nst(dao).select("distinct aaa", A.class, Cnd.where("aaa", "=", "a1"))))));
System.out.println(list2);
}
@Test
public void andTest() {
dao.query(A.class, Cnd.where("", "exists",
Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", "=", 1).and("aname", "like", "%a%"))));
dao.query(A.class, Cnd.where("aid", "=", Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", "=", 1)))
.and("aname", "=", "a1"));
dao.query(A.class,
Cnd.where("aid", "=",
Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", "=", 1).and("aname", "=", "a1")))
.and("aname", "=", "a1"));
}
@Test
public void ascTest() {
dao.query(A.class, Cnd.where("aid", "!=", 1).asc("aaa"));
dao.query(A.class,
Cnd.where("aid", "in", Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", "!=", 1).asc("aaa"))));
}
@Test
public void limitTest() {
dao.query(A.class, Cnd.where("aid", "!=", 1).limit(2, 1));
// 我的数据库版本不支持子查询分页 不过能成功生成期望语句
dao.query(A.class,
Cnd.where("aid", "in", Cnd.nst(dao).select("aid", A.class, Cnd.where("aid", "!=", 1).limit(2, 1))));
}
}