zoukankan      html  css  js  c++  java
  • 第三章:学生管理模块

    显示学生资料——准备

    1.显示学生资料

    2.删除学生资料

    3.学生主键生成策略

    4.添加学生资料

    5.修改学生资料

    1.显示学生资料

    • 添加测试数据
       1 @Test
       2     public void testSaveStudents()
       3     {
       4         //创建配置对象
       5         Configuration config=new Configuration().configure();
       6         //创建服务注册对象
       7         ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
       8         //创建sessionFactory
       9         SessionFactory sessionFactory=config.buildSessionFactory(serviceRegistry);
      10         //创建session对象
      11         Session session = sessionFactory.getCurrentSession();
      12         //创建事务对象
      13         Transaction tx = session.beginTransaction();
      14         
      15         Students s1 = new Students("s0000001","张三丰","男",new Date(),"武当山");
      16         Students s2 = new Students("s0000002","郭靖","男",new Date(),"桃花岛");
      17         Students s3 = new Students("s0000003","黄蓉","女",new Date(),"桃花岛");
      18         
      19         session.save(s1);
      20         session.save(s2);
      21         session.save(s3);
      22         
      23         tx.commit();
      24         sessionFactory.close();
      25     }
    •  设计学生业务逻辑接口
     1 package service;
     2 
     3 import java.util.List;
     4 
     5 import entity.Students;
     6 
     7 //学生的业务逻辑接口
     8 public interface StudentsDAO {
     9     
    10     //查询所有学生资料
    11     public List<Students> queryAllStudents();
    12     
    13     //根据学生编号查询学生资料
    14     public Students queryStudentsBySid(String sid);
    15     
    16     //添加学生资料
    17     public boolean addStudents(Students s);
    18     
    19     //修改学生资料
    20     public boolean updateStudents(Students s);
    21     
    22     //删除学生资料
    23     public boolean deleteStudents(String sid);
    24 
    25 }
    • 设计学生业务逻辑接口实现类
     1 package service.impl;
     2 
     3 import java.util.List;
     4 
     5 import org.junit.Test;
     6 
     7 import entity.Students;
     8 
     9 import service.StudentsDAO;
    10 
    11 public class TestStudentsDAOImpl {
    12 
    13     @Test
    14     public void testQueryAllStudents()
    15     {
    16         StudentsDAO sdao = new StudentsDAOImpl();//接口类型的引用
    17         List<Students> list=sdao.queryAllStudents();
    18     
    19         for(int i=0;i<list.size();i++)
    20         {
    21             System.out.println(list.get(i));
    22         }
    23     }
    24 }
    • 设计学生Action类:实现显示学生资料Action
       1 package action;
       2 
       3 import java.util.List;
       4 
       5 import entity.Students;
       6 
       7 import service.StudentsDAO;
       8 import service.impl.StudentsDAOImpl;
       9 
      10 //学生Action类
      11 public class StudentsAction extends SuperAction{
      12 
      13     /**
      14      * 
      15      */
      16     private static final long serialVersionUID = 1L;
      17     
      18     //查询所有学生的动作
      19     public String query(){
      20         StudentsDAO sdao = new StudentsDAOImpl();
      21         List<Students> list=sdao.queryAllStudents();
      22         //放进session中
      23         if(list!=null&&list.size()>0)//找到学生记录
      24         {
      25             session.setAttribute("students_list", list);
      26         }
      27         return "query_success";//返回视图
      28     }
      29 }
    • 显示学生资料
      • 页面调用
    • 显示数据

    2.删除学生资料

    • 界面调用
    • 编写业务逻辑代码
       1 public boolean deleteStudents(String sid) {
       2         // TODO Auto-generated method stub
       3         Transaction tx=null;//生成事务对象
       4         //String hql="";//执行的hql语句
       5         try
       6         {
       7             Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();//获得会话
       8             tx = session.beginTransaction();//开启事务
       9             Students s = (Students)session.get(Students.class, sid);//获得学生对象
      10             session.delete(s);//删除这个学生
      11             tx.commit();//提交事务
      12             return true;
      13         }
      14         catch(Exception ex)
      15         {
      16             ex.printStackTrace();
      17             tx.commit();
      18             return false;
      19         }
      20         finally
      21         {
      22             if(tx!=null){
      23                 tx=null;
      24             }
      25         }
      26     }
    • 编写删除action
      1 //删除学生动作
      2     public String delete()
      3     {
      4         StudentsDAO sdao = new StudentsDAOImpl();
      5         String sid = request.getParameter("sid");
      6         sdao.deleteStudents(sid);//调用删除方法
      7         return "delete_success";
      8     }
    • 测试

    3.学生主键生成策略

    4.添加学生资料

    • 界面原型演示
    • 编写添加学生业务逻辑代码
    • 编写添加action
    • 页面调用

    添加学生资料

    • 学生的主键生成策略
       1 //生成学生的学号
       2     private String getNewSid()
       3     {
       4         Transaction tx=null;//生成事务对象
       5         String hql="";
       6         String sid = null;//返回学生编号
       7         try
       8         {
       9             Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();//获得会话
      10             tx = session.beginTransaction();//开启事务
      11             //获得当前学生的最大编号   
      12             hql="select max(sid) from Students";
      13             Query query=session.createQuery(hql);
      14             sid = (String)query.uniqueResult();
      15             if(sid==null||"".equals(sid))
      16             {
      17                 //给一个默认的最大编号
      18                 sid="s0000001";
      19             }
      20             else
      21             {
      22                 String temp = sid.substring(1);//去掉第一个字母s,只取后面的七位
      23                 int i=Integer.parseInt(temp);//转成数字
      24                 i++;
      25                 //再还原为字符串
      26                 temp=String.valueOf(i);
      27                 int len=temp.length();
      28                 //凑够七位
      29                 for (int j = 0; j <7-len; j++) 
      30                 {
      31                     temp="0"+temp;
      32                 }
      33                 sid = "S"+temp;
      34             }
      35             return sid;
      36         }
      37         catch(Exception ex)
      38         {
      39             ex.printStackTrace();
      40             return null;
      41         }
      42         finally
      43         {
      44             //关闭事务,把事务的引用置成空
      45             if(tx!=null){
      46                 tx=null;
      47             }
      48         }
      49     }
    • 编写添加学生业务逻辑代码
    public boolean addStudents(Students s) {
            // TODO Auto-generated method stub
            s.setSid(getNewSid());//设置学生学号
            Transaction tx=null;//生成事务对象
            try
            {
                Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();//获得会话
                tx = session.beginTransaction();//开启事务
                session.save(s);
                tx.commit();
                return true;
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
                return false;
            }
            finally
            {
                //把事务置成空
                if(tx!=null){
                    tx=null;
                }
            }        
        }

    5.修改学生资料

    • 界面原型演示
    • 编写修改学生业务逻辑代码
      页面显示学生资料
      保存修改后的学生资料
    • 编写修改action
    • 页面调用
  • 相关阅读:
    第七届湘计算机程序设计竞赛的学生 报道称,数字游戏
    python IDE
    字符串处理
    Ajax得知(两)—— 一个简单的Ajax示例
    九度OJ 1068 球半径和数量 (模拟)
    centos 之7zip
    svnclient本地化和异常处理
    java web.xml listener servlet 和filter加载顺序
    Jquery zTree实例
    探索Android中的Parcel机制(上)
  • 原文地址:https://www.cnblogs.com/songsongblue/p/9532894.html
Copyright © 2011-2022 走看看