中间层构造的目的是将hibernate数据操作封装,并且形成基于spring的服务注入。
(1)DAO层
接口:
package com.my.dao;
import java.util.List;
import com.my.model.PageBean;
import com.my.vo.SysMenu;
public interface ISysMenuDAO {
public List getAllSysMenu();
//添加信息
public boolean saveSysMenu(SysMenu SysMenuInfo);
//修改信息
public boolean updateSysMenu(SysMenu SysMenuInfo);
//删除信息
public boolean deleteSysMenu(SysMenu SysMenuInfo);
/**
* 分页显示通知
* @param hql 查询语句
* @param offset 开始记录
* @param length 一次查询几条记录
* @return
*/
public List findAllByPage(final String hql,final int offset,final int length); //分页显示
/**
* 查询所有记录数
* @param hql 查询语句
* @return 总记录数
*/
public int getAllRowCount(String hql);
/**
* 查询指定页的信息
* @param pageSize 每一页的记录数
* @param page 查询指定的页
*
*/
public PageBean findAllByPage(int pageSize, int page);
//根据ID查询信息是否已存在
public boolean isExistSysMenu(String studentName);
//根据ID查询
public SysMenu getSysMenuByID(int id);
}
实现:
package com.my.dao.impl;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.my.dao.BaseDAO;
import com.my.dao.ISysMenuDAO;
import com.my.model.PageBean;
import com.my.vo.SysMenu;
import com.my.vo.HelpStudentRecord;
public class SysMenuDAO extends BaseDAO implements ISysMenuDAO {
public boolean deleteSysMenu(SysMenu SysMenuInfo) {
boolean result=false;
try{
Session session=getSession();
Transaction tx=session.beginTransaction();
session.delete(SysMenuInfo);
tx.commit();
result=true;
session.close();
}catch(Exception e){
e.printStackTrace();
}
return result;
}
public List findAllByPage(String hql, int offset, int length) {
Session session=getSession();
Query query=session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list=query.list();
session.close();
return list;
}
public PageBean findAllByPage(int pageSize, int page) {
String hql="from SysMenu SysMenuInfo order by id desc";
int allRow=this.getAllRowCount(hql);
int totalPage=PageBean.countTotalPage(pageSize, allRow);
int offset=PageBean.countOffset(pageSize, page);
if(offset<0)
{
offset=0;
}
final int length=pageSize;
final int currentPage=PageBean.countCurrentPage(page);
List list=this.findAllByPage(hql, offset, length);
PageBean pageBean=new PageBean();
pageBean.setPageSize(pageSize);
pageBean.setAllRow(allRow);
pageBean.setCurrentPage(currentPage);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
return pageBean;
}
public int getAllRowCount(String hql) {
Session session=getSession();
Query query=session.createQuery(hql);
List list=query.list();
session.close();
return list.size();
}
public SysMenu getSysMenuByID(int id) {
Session session=getSession();
SysMenu SysMenuInfo=(SysMenu) session.load(SysMenu.class, new Integer(id));
//session.close();
return SysMenuInfo;
}
public List getAllSysMenu() {
List list=new ArrayList();
String hql="from SysMenu as SysMenuInfo";
Session session=this.getSession();
Query query= session.createQuery(hql);
list=query.list();
return list;
}
public boolean isExistSysMenu(String studentName) {
boolean result=false;
Session session=getSession();
String hql="from SysMenu SysMenuInfo where SysMenuInfo.parties=?";
Query query=session.createQuery(hql);
query.setParameter(0, studentName);
List list=query.list();
if(list.size()>0){
result=true;
}
session.close();
return result;
}
public boolean saveSysMenu(SysMenu SysMenuInfo) {
boolean result=false;
try{
Session session=getSession();
Transaction tx=session.beginTransaction();
session.save(SysMenuInfo);
tx.commit();
result=true;
session.close();
}catch(Exception e){
e.printStackTrace();
}
return result;
}
public boolean updateSysMenu(SysMenu SysMenuInfo) {
boolean result=false;
try{
Session session=getSession();
Transaction tx=session.beginTransaction();
session.update(SysMenuInfo);
tx.commit();
result=true;
session.close();
}catch(Exception e){
e.printStackTrace();
}
return result;
}
}
(2)service层:
该层对DAO进行封装,提供基于spring的服务器注入:
接口:
package com.my.service;
import java.util.List;
import com.my.model.PageBean;
import com.my.vo.SysMenu;
public interface ISysMenuService {
public List getAllSysMenu();
//添加信息
public boolean saveSysMenu(SysMenu sysmenuInfo);
//修改信息
public boolean updateSysMenu(SysMenu sysmenuInfo);
//删除信息
public boolean deleteSysMenu(SysMenu sysmenuInfo);
/**
* 分页显示通知
* @param hql 查询语句
* @param offset 开始记录
* @param length 一次查询几条记录
* @return
*/
public List findAllByPage(final String hql,final int offset,final int length); //分页显示
/**
* 查询所有记录数
* @param hql 查询语句
* @return 总记录数
*/
public int getAllRowCount(String hql);
/**
* 查询指定页的信息
* @param pageSize 每一页的记录数
* @param page 查询指定的页
*
*/
public PageBean findAllByPage(int pageSize, int page);
//根据NAME查询信息是否已存在
public boolean isExistSysMenu(String studentName);
//根据ID查询记录
public SysMenu getSysMenuByID(int id);
}
实现:
package com.my.service.impl;
import java.util.List;
import com.my.dao.ISysMenuDAO;
import com.my.model.PageBean;
import com.my.service.ISysMenuService;
import com.my.vo.SysMenu;
public class SysMenuService implements ISysMenuService {
private ISysMenuDAO sysmenuDAO;
public List getAllSysMenu() {
return sysmenuDAO.getAllSysMenu();
}
public ISysMenuDAO getSysmenuDAO() {
return sysmenuDAO;
}
public void setSysmenuDAO(ISysMenuDAO sysmenuDAO) {
this.sysmenuDAO = sysmenuDAO;
}
public boolean deleteSysMenu(SysMenu sysmenuInfo) {
return sysmenuDAO.deleteSysMenu(sysmenuInfo);
}
public List findAllByPage(String hql, int offset, int length) {
return sysmenuDAO.findAllByPage(hql, offset, length);
}
public PageBean findAllByPage(int pageSize, int page) {
return sysmenuDAO.findAllByPage(pageSize, page);
}
public int getAllRowCount(String hql) {
return sysmenuDAO.getAllRowCount(hql);
}
public SysMenu getSysMenuByID(int id) {
return sysmenuDAO.getSysMenuByID(id);
}
public boolean isExistSysMenu(String studentName) {
return sysmenuDAO.isExistSysMenu(studentName);
}
public boolean saveSysMenu(SysMenu sysmenuInfo) {
return sysmenuDAO.saveSysMenu(sysmenuInfo);
}
public boolean updateSysMenu(SysMenu sysmenuInfo) {
return sysmenuDAO.updateSysMenu(sysmenuInfo);
}
}
3)注入Spring:
在applicationContext.xml中注入服务:
<bean id="sysmenuDAO" class="com.my.dao.impl.SysMenuDAO" parent="baseDAO"/>
<!-- sysmenuService -->
<bean id="sysmenuService" class="com.my.service.impl.SysMenuService">
<property name="sysmenuDAO">
<ref bean="sysmenuDAO"/>
</property>
</bean>
<!--sysmenuManagerAction -->
<bean id="sysmenuManagerAction" class="com.my.action.SysMenuManagerAction">
<property name="sysmenuService">
<ref bean="sysmenuService" />
</property>
</bean>
这里需要注意的就是大小写问题,一般类开头是大写,而beanid一般是小写。而关于baen的属性name开头也应该小写。形成规范。