显示学生资料——准备

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 stubs.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
  • 页面调用

转载于:https://www.cnblogs.com/songsongblue/p/9532894.html

第三章:学生管理模块相关推荐

  1. 操作系统第三章-内存管理

    写在前面:本文参考王道论坛的 操作系统考研复习指导单科书 下面的流程图很重要. 加入快表的基本分页 加入快表的二级页表!! 虚拟存储器:请求分页的流程图. 文章目录 第三章 内存管理 3.1 内存管理 ...

  2. 基于全生命周期的主数据管理:MDM详解与实战学习03 第三章 主数据管理的关键技术

    第三章 主数据管理的关键技术 3.1 数据标准 3.1.1 数据标准的分类 3.1.2 物资类数据标准 1.国际标准 2.国内标准 3.1.3 产品数据标准 3.1.4 财务数据标准 3.2 信息分类 ...

  3. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  4. 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  5. (王道408考研操作系统)第三章内存管理-第二节3:页面置换算法2

    上接: (王道408考研操作系统)第三章内存管理-第二节2:页面置换算法1 文章目录 一:时钟置换算法(CLOCK) (1)简单时钟置换算法 (2)改进型时钟置换算法 二:页面置换算法总结 一:时钟置 ...

  6. (王道408考研操作系统)第三章内存管理-第二节1:虚拟内存管理基本概念

    文章目录 一:传统存储管理方式的弊端 二:局部性原理与高速缓冲技术Cache (1)Cache基本原理 (2)局部性原理 三:虚拟内存的定义和特征 (1)定义 (2)特征 四:虚拟内存实现 内存管理需 ...

  7. 数据库系统概论王珊编写的第三章学生-课程数据库

    一.前言 因为考研需求,我于是将数据库系统概论王珊编写的第三章学生-课程数据库的三张表实现了一下,为了简化操作,我没有实现部分外码功能. 我用的是MySQL实现的 二.正文 /*3. 创建学生表Stu ...

  8. 第三章 进程管理笔记

    第三章 进程管理笔记 20135109 高艺桐 3.1进程 1.程序本身并不是进程,进程是处于执行期的程序以及相关资源的总称. 2.执行线程,简称线程,是进程中活动的对象.每个线程都拥有一个独立的计数 ...

  9. 【信息系统项目管理师】第三章 立项管理思维导图

    [信息系统项目管理师]第三章 立项管理思维导图 说到项目立项管理,包括的内容有项目建议书,可行性研究,项目论证与评估,招标投标流程等内容.立项也要讲求流程,甲方立项的流程是先做需求调研,编写项目申请书 ...

  10. 每个人的商学院--管理基础(第三章:管理工具)--读书笔记

    第三章:管理工具 面向业绩:梦想归梦想,绩效归绩效 读书笔记: 管理工作并非总能收获大团圆的结局,还要时常做出真正艰难的决定. 管理只对绩效负责. 绩效就是达成公司的经营目标. 公司里的两层关系:第一 ...

最新文章

  1. vue.js与ajax删除,javascript - VueJs和VueResource,从Ajax请求中删除标头字段 - 堆栈内存溢出...
  2. 洛谷4147:玉蟾宫——题解
  3. android xml pid vid,增加属性标识摄像头的vid与pid,以便知道摄像头与设备文件的对应关系...
  4. 社会化工程攻击针对目标不再仅限最终用户
  5. 进程状态转换(了解)
  6. 57 SD配置-科目分配-定义客户账户分配组
  7. spark mysql 写_Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)...
  8. python写网页插件_用python 实现activex网页控件
  9. 如何使用C#操作WinAPI
  10. deepshare android,DeepShare Android 集成
  11. Shell学习五-分割文件和提取文件名扩展名
  12. 用开源技术巧解代账公司开票据难题
  13. Visual Stadio 2012创建WebApplication应用和运行赏析
  14. 【STM32】STM32CubeMX使用FreeRTOS教程1----定时器学习
  15. 【修电脑】电脑将在1分钟后重启
  16. Elasticsearch5.2.1集群搭建,动态加入节点,并添加监控诊断插件
  17. threejs中引入draco压缩后的模型
  18. 李开复就中国移动开发者大会的演讲总结 --摘自新浪微博
  19. nginx reopen nginx 日志
  20. 【实用算法教学】——Apriori算法,教你使用亲和性分析方法推荐电影

热门文章

  1. Docker下安装GitLab
  2. 51nod 1086 背包问题 V2 【二进制/多重背包】
  3. 【Xilinx-Petalinux学习】-02-建立PetaLinux工程
  4. 财富:鲍尔默时代的微软一直在走下坡路
  5. vscode中断点调试nodejs实用方便
  6. React Native开发总结(二)
  7. 【PHP学习】—get请求传递参数(五)
  8. JavaScript学习(三十四)—事件委托
  9. 一篇文章教你学会如何使用CSS中的雪碧图(CSS Sprite)
  10. mysql时间段查询语句_MySQL 如何查看慢查询语句