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);
       }
 
}


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值