hibernategenericdaotest.java

来自「应用泛型以及反射编写的单表操作框架」· Java 代码 · 共 77 行

JAVA
77
字号
package org.langsin.core.dao.test;

import java.util.List;

import junit.framework.TestCase;

import org.easymock.EasyMock;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.classic.Session;
import org.langsin.core.dao.HibernateGenericDao;
import org.langsin.core.dao.support.Page;
import org.springframework.orm.hibernate3.HibernateTemplate;

public class HibernateGenericDaoTest extends TestCase {

	public void testPagedQueryHql() {
		int totalNumber = 326;
		int pageNo = 12;
		int pageSize = 25;

		String hql = "from User user where user.name like ? ";
		String sHql = " select count (*) from User user where user.name like ? ";
		Object[] args = {"test%"};

		HibernateGenericDao dao = new HibernateGenericDao();
		SessionFactory mockSessionFactory = EasyMock.createMock(SessionFactory.class);
		Session mockSession = EasyMock.createMock(Session.class);
		Query mockQuery = EasyMock.createMock(Query.class);
		HibernateTemplate mockHT = org.easymock.classextension.EasyMock.createMock(HibernateTemplate.class);
		List mockList = EasyMock.createMock(List.class);
		

		
		EasyMock.expect(mockSessionFactory.openSession()).andReturn(mockSession);
		EasyMock.expect(mockSession.getSessionFactory()).andReturn(mockSessionFactory);
		EasyMock.expect(mockSession.createQuery(hql)).andReturn(mockQuery);
		for (int i = 0; i < args.length; i++) {
			EasyMock.expect(mockQuery.setParameter(i, args[i])).andReturn(mockQuery);
		}
	
		EasyMock.expect(mockSessionFactory.openSession()).andReturn(mockSession);
		EasyMock.expect(mockSession.getSessionFactory()).andReturn(mockSessionFactory);
		EasyMock.expect(mockSession.createQuery(sHql)).andReturn(mockQuery);
		for (int i = 0; i < args.length; i++) {
			EasyMock.expect(mockQuery.setParameter(i, args[i])).andReturn(mockQuery);
		}
		mockSession.flush();
		EasyMock.expect(mockQuery.list()).andReturn(mockList);
		EasyMock.expect(mockHT.find(sHql, args)).andReturn(mockList);
		EasyMock.expect(mockList.get(0)).andReturn((long) totalNumber);
	
		EasyMock.expect(mockQuery.setFirstResult(275)).andReturn(mockQuery);
		EasyMock.expect(mockQuery.setMaxResults(25)).andReturn(mockQuery);
		EasyMock.expect(mockQuery.list()).andReturn(mockList);
		EasyMock.expect(mockList.size()).andReturn(totalNumber);

		EasyMock.replay(mockSessionFactory);
		EasyMock.replay(mockSession);
		EasyMock.replay(mockQuery);
		org.easymock.classextension.EasyMock.replay(mockHT);
		EasyMock.replay(mockList);

		dao.setHibernateTemplate(mockHT);
		dao.setSessionFactory(mockSessionFactory);

		Page page = dao.pagedQuery(hql, pageNo, pageSize, args);
		

		assertEquals(14, page.getTotalPageCount());
		assertEquals(12, page.getCurrentPageNo());
		assertTrue(page.hasNextPage());
		assertTrue(page.hasPreviousPage());
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?