SSH多表操作入门
这个系统写到这里,所涉及到的都是单表的操作,增删改查,现在功能需要完善,涉及到多表操作,开始是毫无头绪,书上的代码也没有现成的可以借鉴,想来就从最简单的开始。问题出现了很多,不过最后在龙哥的提示下还是实现了,现在把完整过程列出来。
目的很简单:班级表中的一个班级删除或更新后,学生表中对应的学生记录被删除或学生对应的班级信息得到更新。
1.数据表
第一个是班级表(本来想叫class,在程序中与关键字冲突,改为c后,也一直报错,最后改为ce)
ce
第二个是学生表
se
这里ce表中cname为主键,se表中sid为主键,cname为外键。
然后在se表中进行外键关联(这里要注意的是,表建立以后要把表的类型类型改为InnoDB,否则它会提示不支持外键操作):
下面的框框默认为无动作,这里要改成层叠,即级联操作(应该是),如不修改,则当你修改cname表中的数据时会提示无法修改,出错。
上面的步骤完成后,当你修改或删除ce表中的cname时,se表中的cname也会更新或者对应的记录被删除。这个时候说明数据库已经成功建立。
2.SSH框架代码
把PO、DAO、Service、Action、applicationContext.xml、struts.xml、jsp的代码都写好,这里主要是PO层,其他都跟之前一致,只是在CeDAO中加一个“根据名称删除班级”的方法。
Ce.java
package po; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name = "ce")
public class Ce {
@Id @Column(name="cname")
@GeneratedValue(strategy = GenerationType.AUTO)
private String cname; public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
}
Se.java
package po; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table; import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType; @Entity
@Table(name = "se")
public class Se {
@Id @Column(name="sid")
@GeneratedValue(strategy = GenerationType.AUTO)
private String sid; @Column(name="sname")
private String sname; @ManyToOne(targetEntity=Ce.class)
@JoinColumn(name="cname")
@Cascade(CascadeType.ALL)
private Ce ce; public String getSid() {
return sid;
} public void setSid(String sid) {
this.sid = sid;
} public String getSname() {
return sname;
} public void setSname(String sname) {
this.sname = sname;
} public Ce getCe() {
return ce;
} public void setCe(Ce ce) {
this.ce = ce;
}
}
这里要注意两点:
1. 3个注解缺一不可,特别是级联操作的第三个
2. jsp中对于se表第三个属性的显示
其他代码部分省略。。。
结果(视频放不了。。。):
大功告成!
本文系原创,转载请注明出处,谢谢。
SSH多表操作入门的更多相关文章
- MySQL-快速入门(1)基本数据库、表操作语句
1.创建数据库 create database db_name;show create database db_name\G; //查看数据创建语句show databases; //查看当前创建的数 ...
- Mysql常用表操作 | 单表查询
160905 常用表操作 1. mysql -u root -p 回车 输入密码 2. 显示数据库列表 show databases 3. 进入某数据库 use database data ...
- C语言与数据库操作入门
https://blog.csdn.net/flyingqd/article/details/78763652 C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1 ...
- C语言与数据库操作入门(Win版)
C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1387 数据库,DataBase,学C语言的是不是想说,很想爱她却并不容易呢?不用着急,C语言也可以操作数据库的 ...
- day 46 Django 学习3 数据库单表操作以及反向解析
前情提要: Django 已经学了不少了, 今天学习链接数据库的操作.以及相关的反向解析等 一:反向解析 1:反向解析模板层 跳转时设定url会随着前面的路由改变而改变 2:反向解析之 ...
- 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数
孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...
- Django---ORM简介丶单表操作丶增删改查
一丶ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...
- 浅谈MySQL多表操作
字段操作 create table tf1( id int primary key auto_increment, x int, y int ); # 修改 alter table tf1 modif ...
- Sql Server系列:数据表操作
表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...
随机推荐
- java线程池之synchronized锁
//Object 定义了一个引用类型的对象用于加锁 static Object Lock = new Object(); //定义一个int类型变量0做初始值 static int iCheck = ...
- C++->输入输出文件流的相关函数
标准输入输出流与文件输入输出流的关系图: 文件输出流头文件“ofstream/fstream”,文件输入流头文件“ifstream/fstream” 1.1.打开文件方式:流类 对象名(文件名,方式) ...
- Jenkins-Publish Over SSH插件
插件安装 打开Jenkins的“系统管理>管理插件”,选择“可选插件”,在输入框中输入“Publish over SSH”进行搜索,如果搜索不到可以在“已安装”里确认是否已经安装过.在搜索结果中 ...
- Flink架构,源码及debug
序 工作中用Flink做批量和流式处理有段时间了,感觉只看Flink文档是对Flink ProgramRuntime的细节描述不是很多, 程序员还是看代码最简单和有效.所以想写点东西,记录一下,如果能 ...
- 二分类模型之logistic
liner classifiers 逻辑回归用在2分类问题上居多.它是一个非线性的回归模型,其最大的好处恰恰是可以解决二元类问题,目前在金融行业,基本都是使用Logistic回归来预判一个用户是否为好 ...
- JavaScript - request封装
request封装--微信小程序使用async,await ES5 参考代码 var request = function(param){ var _this = this; $.ajax({ typ ...
- java集合框架备忘
List,Set,Map三者的区别? List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性质): 不允许重复的集合.不会有多 ...
- PAT (Basic Level) Practice (中文)1030 完美数列 (25 分) (有点意思)
给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. 输入格 ...
- selenium--find_element_by_xpath()方法汇总
一.从根目录/开始 有点像Linux的文件查看,/代表根目录,一级一级的查找,直接子节点,相当于css_selector中的>号/html/body/div/p 二.根据元素属性选择: 查找具体 ...
- contos7 用户管理相关操作命令
# 查看用户列表 cut -d : -f 1 /etc/passwd # 查看可以登录系统的用户 cat /etc/passwd | grep -v /sbin/nologin | cut -d : ...