第三章:学生管理模块
显示学生资料——准备
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
第三章:学生管理模块相关推荐
- 操作系统第三章-内存管理
写在前面:本文参考王道论坛的 操作系统考研复习指导单科书 下面的流程图很重要. 加入快表的基本分页 加入快表的二级页表!! 虚拟存储器:请求分页的流程图. 文章目录 第三章 内存管理 3.1 内存管理 ...
- 基于全生命周期的主数据管理:MDM详解与实战学习03 第三章 主数据管理的关键技术
第三章 主数据管理的关键技术 3.1 数据标准 3.1.1 数据标准的分类 3.1.2 物资类数据标准 1.国际标准 2.国内标准 3.1.3 产品数据标准 3.1.4 财务数据标准 3.2 信息分类 ...
- 《Linux内核设计与实现》读书笔记 第三章 进程管理
第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...
- 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略
本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...
- (王道408考研操作系统)第三章内存管理-第二节3:页面置换算法2
上接: (王道408考研操作系统)第三章内存管理-第二节2:页面置换算法1 文章目录 一:时钟置换算法(CLOCK) (1)简单时钟置换算法 (2)改进型时钟置换算法 二:页面置换算法总结 一:时钟置 ...
- (王道408考研操作系统)第三章内存管理-第二节1:虚拟内存管理基本概念
文章目录 一:传统存储管理方式的弊端 二:局部性原理与高速缓冲技术Cache (1)Cache基本原理 (2)局部性原理 三:虚拟内存的定义和特征 (1)定义 (2)特征 四:虚拟内存实现 内存管理需 ...
- 数据库系统概论王珊编写的第三章学生-课程数据库
一.前言 因为考研需求,我于是将数据库系统概论王珊编写的第三章学生-课程数据库的三张表实现了一下,为了简化操作,我没有实现部分外码功能. 我用的是MySQL实现的 二.正文 /*3. 创建学生表Stu ...
- 第三章 进程管理笔记
第三章 进程管理笔记 20135109 高艺桐 3.1进程 1.程序本身并不是进程,进程是处于执行期的程序以及相关资源的总称. 2.执行线程,简称线程,是进程中活动的对象.每个线程都拥有一个独立的计数 ...
- 【信息系统项目管理师】第三章 立项管理思维导图
[信息系统项目管理师]第三章 立项管理思维导图 说到项目立项管理,包括的内容有项目建议书,可行性研究,项目论证与评估,招标投标流程等内容.立项也要讲求流程,甲方立项的流程是先做需求调研,编写项目申请书 ...
- 每个人的商学院--管理基础(第三章:管理工具)--读书笔记
第三章:管理工具 面向业绩:梦想归梦想,绩效归绩效 读书笔记: 管理工作并非总能收获大团圆的结局,还要时常做出真正艰难的决定. 管理只对绩效负责. 绩效就是达成公司的经营目标. 公司里的两层关系:第一 ...
最新文章
- vue.js与ajax删除,javascript - VueJs和VueResource,从Ajax请求中删除标头字段 - 堆栈内存溢出...
- 洛谷4147:玉蟾宫——题解
- android xml pid vid,增加属性标识摄像头的vid与pid,以便知道摄像头与设备文件的对应关系...
- 社会化工程攻击针对目标不再仅限最终用户
- 进程状态转换(了解)
- 57 SD配置-科目分配-定义客户账户分配组
- spark mysql 写_Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)...
- python写网页插件_用python 实现activex网页控件
- 如何使用C#操作WinAPI
- deepshare android,DeepShare Android 集成
- Shell学习五-分割文件和提取文件名扩展名
- 用开源技术巧解代账公司开票据难题
- Visual Stadio 2012创建WebApplication应用和运行赏析
- 【STM32】STM32CubeMX使用FreeRTOS教程1----定时器学习
- 【修电脑】电脑将在1分钟后重启
- Elasticsearch5.2.1集群搭建,动态加入节点,并添加监控诊断插件
- threejs中引入draco压缩后的模型
- 李开复就中国移动开发者大会的演讲总结 --摘自新浪微博
- nginx reopen nginx 日志
- 【实用算法教学】——Apriori算法,教你使用亲和性分析方法推荐电影