将学习笔记5的测试类放到实际应用中进行实现
要用到dao,serivice,servlet类进行分级编写:
编写的顺序是dao-service-servlet
首先是dao的编写:
CstCustomer接口类(code)
public interface CstCustomerDao {
//插入客户信息
public void insert(CstCustomer customer);
//查询记录总数
/**
*
* @param detachedCriteria 存储了查询条件,可以在任何地方拼接detachedCriteria对象
* @return
*/
public Long findCustomerCount(DetachedCriteria detachedCriteria);
//分页查询数据列表
/**
*
* @param detachedCriteria 存储了查询条件
* @param firstResult 起始记录下标,从0开始
* @param maxResults 每页显示记录数
* @return
*/
public List<CstCustomer> findCustomerList(DetachedCriteria detachedCriteria,int firstResult,int maxResults);
}
注意findCustomerList方法里的参数是(DetachedCriteria detachedCriteria,int firstResult,int maxResults)
CstCustomerImpl类(code)
对接口的方法进行重写
public class CstCustomerDaoImpl implements CstCustomerDao{
public void insert(CstCustomer customer) {
//创建session
Session session = HibernateUtil.openSession();
//开启事务
Transaction transaction = session.beginTransaction();
try {
session.save(customer);
//提交事务
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
} finally {
session.close();
}
}
@Override
public Long findCustomerCount(DetachedCriteria detachedCriteria) {
//转成可执行Criteria
Session session = HibernateUtil.openSession();
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
//设置rowCount的投影列
criteria.setProjection(Projections.rowCount());
Long total = (Long)criteria.uniqueResult();
return total;
}