📄 daohibernatetest.java
字号:
package com.lily.dap.dao;
import java.sql.ResultSet;
import java.util.List;
import com.lily.dap.model.Module;
import com.lily.dap.model.QueryCondition;
import com.lily.dap.model.QueryExpression;
import com.lily.dap.model.right.RightObject;
import com.lily.dap.model.right.RightOperation;
/**
* 针对 Dao 提供的各种方法进行测试
* 测试使用的库表包括(module, right_object, right_operation),初始数据从sample-data.xml中导入
*
* @author zouxuemo
*
*/
public class DaoHibernateTest extends BaseDaoTestCase {
private Dao dao;
/**
* @param dao the dao to set
*/
public void setDao(Dao dao) {
this.dao = dao;
}
public void testGet() {
List rightObjectList = dao.gets(RightObject.class, new QueryCondition().putCondition("class_id", 1));
assertEquals(3, rightObjectList.size());
List rightOperationList = dao.gets(RightOperation.class, new QueryCondition().putCondition("objectCode", "system"));
assertEquals(3, rightOperationList.size());
rightOperationList = dao.gets(RightOperation.class, new QueryCondition().putCondition("objectCode", QueryExpression.OP_IN, new String[]{"system", "right", "organize"}));
assertTrue(rightOperationList.size() > 0);
}
public void testSaveRemove() {
Module module = new Module();
module.setCode("cms");
module.setName("内容管理系统");
dao.save(module);
assertTrue(module.getId() > 0);
int id = module.getId();
List moduleList = dao.gets(Module.class, new QueryCondition().putCondition("code", "cms"));
assertEquals(1, moduleList.size());
dao.remove(Module.class, new Integer(id));
moduleList = dao.gets(Module.class, new QueryCondition().putCondition("code", "cms"));
assertEquals(0, moduleList.size());
}
public void testExecuteFindStringIntInt() {
String hql = "from RightOperation";
List result = dao.executeFind(hql, 2, 2);
assertEquals(2, result.size());
}
public void testFindUniqueResultString() {
String hql = "from RightOperation";
RightOperation rightOperation = (RightOperation)dao.findUniqueResult(hql);
assertNotNull(rightOperation);
hql = "select count(*) from RightOperation where objectCode = 'system'";
Long count = (Long)dao.findUniqueResult(hql);
assertEquals(3, count.longValue());
hql = "select count(*) from RightOperation where objectCode = '[noobject]'";
count = (Long)dao.findUniqueResult(hql);
assertEquals(0, count.longValue());
hql = "from RightOperation where objectCode = '[noobject]'";
RightOperation ro = (RightOperation)dao.findUniqueResult(hql);
assertNull(ro);
}
public void testExecuteSQLUpdateString() {
String sql = "insert into module (code, name) values('cms', '内容管理系统')";
try {
dao.executeSQLUpdate(sql);
} catch (Exception e) {
fail("executeSQLUpdate failure");
}
List moduleList = dao.gets(Module.class, new QueryCondition().putCondition("code", "cms"));
assertEquals(1, moduleList.size());
sql = "delete from module where code = 'cms'";
try {
dao.executeSQLUpdate(sql);
} catch (Exception e) {
fail("executeSQLUpdate failure");
}
moduleList = dao.gets(Module.class, new QueryCondition().putCondition("code", "cms"));
assertEquals(0, moduleList.size());
}
public void testCount() {
QueryCondition queryCondition = new QueryCondition().putCondition("objectCode", "system").setPageSize(2).setPageNo(2);
long count = dao.count(RightOperation.class, queryCondition);
assertEquals(3, count);
}
public void testExecuteSQLCount() {
String sql = "select * from module where code = 'oa'";
long count = dao.executeSQLCount(sql);
assertEquals(1, count);
sql = "select objectCode, count(code) as cnt from right_operation where objectCode = 'system' group by objectCode";
count = dao.executeSQLCount(sql);
assertEquals(1, count);
/*
* 以下是测试使用EhCache作缓存调用CountCacheAdvice是否起作用
*
* 测试前,修改web/WEB-INF/classes/ehcache.xml文件的超期时间以方便测试
* <cache name="com.lily.dap.QUERY_CACHE"
* maxElementsInMemory="300"
* eternal="false"
* overflowToDisk="true"
* timeToIdleSeconds="10"
* timeToLiveSeconds="10"
* diskPersistent="false"
* />
*/
// long currentTimeMillis = System.currentTimeMillis();
// while (System.currentTimeMillis() < currentTimeMillis + 5000)
// ;
//
// sql = "select objectCode, count(code) as cnt from right_operation where objectCode = 'system' group by objectCode";
// count = dao.executeSQLCount(sql);
// assertEquals(1, count);
//
// currentTimeMillis = System.currentTimeMillis();
// while (System.currentTimeMillis() < currentTimeMillis + 15000)
// ;
//
// sql = "select objectCode, count(code) as cnt from right_operation where objectCode = 'system' group by objectCode";
// count = dao.executeSQLCount(sql);
// assertEquals(1, count);
}
public void testResultSet2List() {
String sql = "select objectCode, count(code) as cnt from right_operation where objectCode = 'system' group by objectCode";
ResultSet rs = dao.executeSQLQuery(sql);
List result = dao.ResultSet2List(rs);
assertEquals(1, result.size());
System.out.println(result);
}
// public void testQueryClassQueryConditionQueryCallback() {
// QueryCondition queryCondition = new QueryCondition().putCondition("objectCode", "system").setPageSize(2).setPageNo(2);
// QueryResult result = dao.query(RightOperation.class, queryCondition, null);
//
// assertEquals(1, ((List)result.getResult()).size());
// assertEquals(3, result.getTotalCount());
// }
//
// public void testQueryStringIntIntTransitionCallback() {
// String sql = "select * from right_operation where objectCode = 'system'";
// QueryResult result = dao.query(sql, 2, 2, new TransitionCallback() {
// public Object transition(ResultSet rs) throws SQLException {
// RightOperation rightOperation = new RightOperation();
// rightOperation.setId(rs.getInt("id"));
// rightOperation.setCode(rs.getString("code"));
// rightOperation.setName(rs.getString("name"));
// rightOperation.setDes(rs.getString("des"));
//
// return rightOperation;
// }
//
// });
//
// assertEquals(1, ((List)result.getResult()).size());
// assertEquals(3, result.getTotalCount());
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -