struts2.X心得4--struts2与hibernate连接数据库案例分析
以下只列举出主要的类文件以及struts2重要的知识类或配置,感兴趣的朋友可以留言,本人讲项目源码发过去 package www.csdn.action; import java.util.List; importwww.csdn.domain.Admin;importwww.csdn.service.AdminService;importwww.csdn.service.AdminServiceImpl; import com.opensymphony.xwork2.ActionSupport; public class AdminAction extendsActionSupport{ /** * */ privatestatic final long serialVersionUID = -8739112121666773546L; privateString adminName; privateString adminPassword; privateAdmin entity; privateList<Admin> list; privateint id; privateAdminService service = new AdminServiceImpl(); publicAdmin getEntity() { returnentity; } publicList<Admin> getList() { returnlist; } publicvoid setId(int id) { this.id= id; } publicvoid setAdminName(String adminName) { this.adminName= adminName; } publicString getAdminName() { returnadminName; } publicvoid setAdminPassword(String adminPassword) { this.adminPassword= adminPassword; } //登录方法 publicString login(){ entity= service.login(adminName, adminPassword); if(entity!= null){ returnSUCCESS; }else{ returnLOGIN; } } //查找所有方法 publicString list(){ list= service.getAllObjects(Admin.class); if(list!= null){ returnSUCCESS; }else{ returnERROR; } } //删除方法 publicString delete(){ entity= service.getObjectById(Admin.class, id); service.deleteObject(entity); returnSUCCESS; } //按id查询方法 publicString find(){ entity= service.getObjectById(Admin.class, id); returnSUCCESS; } //增加方法 publicString save(){ entity= new Admin(adminName, adminPassword); service.saveObject(entity); returnSUCCESS; } //更新方法 publicString update(){ entity= service.getObjectById(Admin.class, id); entity.setAdminPassword(adminPassword); service.updateObject(entity); returnSUCCESS; }} package www.csdn.dao; import java.util.List; import org.hibernate.Session;import org.hibernate.Transaction; import www.csdn.domain.Admin;import www.csdn.utils.BaseHibernateDao;import www.csdn.utils.HibernateSessionFactory; /*** *dao实现层,这里将事务的操作跟关闭session的操作放到了dao层,实际开发中的规范是应该放在事务层, * 因为事务处理属于事务 */public class AdminDaoImpl extendsBaseHibernateDao implements AdminDao { @Override publicvoid deleteObject(Admin entity) { Transactiontx = null; try{ Sessionsession = getSession(); tx= session.beginTransaction(); session.delete(entity); tx.commit(); }catch (Exception e) { tx.rollback(); thrownew RuntimeException("删除所有错误"+e); }finally { HibernateSessionFactory.closeSession(); } } @Override publicvoid deleteObjectById(Integer id) { Transactiontx = null; try{ Sessionsession = getSession(); tx= session.beginTransaction(); session.delete(id); tx.commit(); }catch (Exception e) { tx.rollback(); thrownew RuntimeException("根据id错误"+e); }finally { HibernateSessionFactory.closeSession(); } } @SuppressWarnings("unchecked") @Override publicList<Admin> getAllObjects(Class<Admin> entityClass) { try{ returngetSession().createQuery("from Admin").list(); }catch (Exception e) { thrownew RuntimeException("查找错误"+e); }finally { HibernateSessionFactory.closeSession(); } }/** * * 改方法作废,因为与getObjectById用的是同一个session, * 实际应用中都是先查出某一个实体,然后使用getObject()方法删除 */ @Override publicAdmin getObjectById(Class<Admin> className, Integer id) { try{ return(Admin) getSession().get(className, id); }catch (Exception e) { thrownew RuntimeException("根据id查找错误"+e); }finally { HibernateSessionFactory.closeSession(); } } @SuppressWarnings("unchecked") @Override publicList<Admin> getObjects(Class<Admin> clazz, int from, int size) { try{ returngetSession().createQuery("fromAdmin").setFirstResult((from-1)*size).setMaxResults(size).list(); }catch (Exception e) { thrownew RuntimeException("分页查询错误"+e); }finally { HibernateSessionFactory.closeSession(); } } @Override publicvoid saveObject(Admin entity) { Transactiontx = null; try{ Sessionsession = getSession(); tx= session.beginTransaction(); session.save(entity); tx.commit(); }catch (Exception e) { tx.rollback(); thrownew RuntimeException("保存错误"+e); }finally { HibernateSessionFactory.closeSession(); } } @Override publicvoid updateObject(Admin entity) { Transactiontx = null; try{ Sessionsession = getSession(); tx = session.beginTransaction(); session.update(entity); tx.commit(); }catch (Exception e) { tx.rollback(); thrownew RuntimeException("更新错误"+e); }finally { HibernateSessionFactory.closeSession(); } } @Override publicAdmin login(String adminName, String adminPassword) { try{ //这里可以用getString也可以用getParameter()方法 return(Admin) getSession().createQuery("from Admin a where a.adminName = :nameand a.adminPassword = :pass ").setString("name",adminName).setString("pass",adminPassword).uniqueResult(); }catch (Exception e) { thrownew RuntimeException("登录错误"+e); }finally { HibernateSessionFactory.closeSession(); } } } <?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//ApacheSoftware Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="test" namespace="/csdn"extends="struts-default"> <!-- 登录action--> <action name="adminLogin"class="www.csdn.action.AdminAction" method="login"> <!-- 这里redirectACtion相当于转发,其使用$字符带值赋给的变量需要在action类中有set和get方法 --> <result name="success"type="redirectAction"> csdn/adminList.action?adminName=${entity.adminName}</result> <result name="login">/index.jsp</result> </action> <!-- 查询所有action--> <action name="adminList"class="www.csdn.action.AdminAction" method="list"> <result name="success">/list.jsp</result> </action> <!-- 删除action--> <action name="adminDelete"class="www.csdn.action.AdminAction" method="delete"> <result name="success"type="redirectAction">csdn/adminList.action?adminName=${ entity.adminName }</result> </action> <!-- 按id查询action--> <action name="adminFind"class="www.csdn.action.AdminAction" method="find"> <result name="success">/find.jsp</result> </action> <!-- 添加action--> <action name="adminSave"class="www.csdn.action.AdminAction" method="save"> <result name="success"type="redirectAction">csdn/adminList.action?adminName=${ entity.adminName }</result> </action> <!-- 更新action--> <action name="adminUpdate"class="www.csdn.action.AdminAction" method="update"> <result name="success"type="redirectAction">csdn/adminList.action?adminName=${ entity.adminName }</result> </action> </package> </struts> package www.csdn.service; import java.util.List; importwww.csdn.dao.AdminDao;importwww.csdn.dao.AdminDaoImpl;importwww.csdn.domain.Admin; public class AdminServiceImpl implementsAdminService { AdminDaoadminDao = new AdminDaoImpl(); @Override publicAdmin login(String adminName, String adminPassword) { returnadminDao.login(adminName,adminPassword); } @Override publicvoid deleteObject(Admin entity) { adminDao.deleteObject(entity); } @Override publicvoid deleteObjectById(Integer id) { adminDao.deleteObjectById(id); } @Override publicList<Admin> getAllObjects(Class<Admin> entityClass) { returnadminDao.getAllObjects(entityClass); } @Override publicAdmin getObjectById(Class<Admin> className, Integer id) { returnadminDao.getObjectById(className, id); } @Override publicList<Admin> getObjects(Class<Admin> clazz, int from, int size) { returnadminDao.getObjects(clazz, from, size); } @Override publicvoid saveObject(Admin entity) { adminDao.saveObject(entity); } @Override publicvoid updateObject(Admin entity) { adminDao.updateObject(entity); } }