菜鸡的Java笔记 数据表与简单java类映射
利用实际的数据表实现表与类的操作转换
简单java类是整个项目开发中的灵魂所在,它有自己严格的开发标准,而最为重要的是它需要于数据表是完全对应的
不过考虑到现在没有接触到过多的程序设计的功能。所以对于此处的访问就有一些限制,要求可以完成如下的两类操作:
第一步。可以根据数据表的定义的结构关系进行数据以及引用的设置
第二步。根据数据表的结构可以取出所需要的数据
简单java类经过一系列的分析和使用之后应该可以确定其主要作用:保存数据。那么既然说到了数据,自然离不开数据库
在实际的项目开大过程之中,数据库是进行数据持久化保存的重要技术手段(现代的商业项目开发之中,99%的情况下都一定要提供有数据库或类似的存储设备)
那么在实际开发之中简单java类的设计往往不是凭空写出来的都需要与数据表对应
观察如下的对应关系:
实体表表名称 = 类名称
表中的列名称(字段名称) = 类属性
表的外键关系 = 引用关系
表中的一行数据 = 实例化对象
表中的多行数据 = 对象数组
本次选用一个最熟悉的数据表的结构:dept,emp实现这样的转换操作现在开发要求如下:
1.本次开发使用以下 的数据表与表中的字段:
雇员表(emp):empno,ename,job,sal,comm,mgr,deptno
部门表(dept):deptno,dnme,loc
2.数据的操作要求:
根据表结构完成的设置雇员,经理,部门的关系
可以完成如下的内容输出:
可以输出一个雇员的完整信息,包括雇员的领导,以及所在的部门信息
可以输出一个部门的完整信息,以及这个部门的所有雇员信息,以及雇员的领导信息
第一步:写出基本字段的映射转换
雇员表(emp):empno,ename,job,sal,comm
部门表(dept):deptno,dname,loc
class Emp{
private int empno:
private String ename;
private String job:
private double sal:
private double comm:
public Emp(){}
public Emp(int empno,String ename,String job,double sal,double comm){
this.empno = empno:
this.ename = ename:
this.job = job:
this.sal = sal:
this.comm = comm:
}//sgetter,getter 省略
public String getlnfo(){
return "雇员编号:"+this.empno
+",姓名:"+this.ename
+",职位:"+this.job
+",工资:"+this.sal
+",佣金:"+this.comm:
}
}
class Dept{
private int deptno:
private String dname:
private String loc:
public Dept(){}
public Dept(int deptno,String dname,String loc){
this.deptno = deptno:
this.dname = dname:
this.loc = loc:
}//sgetter,getter 省略
public String getlnfo(){
return "部门:"+this.deptno
+",名称:"+this.dname
+",位置:"+this.loc:
} }
public class dataSheet{
public static void main(String args[]){ }
}
第二步:设计关系字段
本程序存在有两个关系:
自身关联:mgr字段,mgr也是一个雇员:
外键关联:deptno字段
class Emp{
private int empno:
private String ename;
private String job:
private double sal:
private double comm:
private Emp mgr:// 雇员领导,一个雇员有一个领导
private Dept dept:// 一个雇员属于一个部门
public Emp(){}
public Emp(int empno,String ename,String job,double sal,double comm){
this.empno = empno:
this.ename = ename:
this.job = job:
this.sal = sal:
this.comm = comm:
}
public void setMgr(Emp mgr){
this.mgr = mgr:
}
public void setDept(Dept dept){
this.dept = dept:
}
public Emp getMgr(){
return this.mgr:
}
public Dept getDept(){
return this.dept:
}
//sgetter,getter 省略
public String getlnfo(){
return "雇员编号:"+this.empno
+", 姓名:"+this.ename
+",职位:"+this.job
+",工资:"+this.sal
+",佣金:"+this.comm:
}
}
class Dept{
private int deptno:
private String dname:
private String loc:
private Emp[] emps:
public Dept(){}
public Dept(int deptno,String dname,String loc){
this.deptno = deptno:
this.dname = dname:
this.loc = loc:
}
public void setEmps(Emp[] emps){
this,emps = emps:
}
public Emp getEmps(){
return this.emps:
}
//sgetter,getter 省略
public String getlnfo(){
return "部门:"+this.deptno
+",名称:"+this.dname
+",位置:"+this.loc:
} }
public class dataSheet{
public static void main(String args[]){ }
}
第三步:执行数据操作
设置数据的关系
class Emp{
private int empno:
private String ename;
private String job:
private double sal:
private double comm:
private Emp mgr:// 雇员领导,一个雇员有一个领导
private Dept dept:// 一个雇员属于一个部门
public Emp(){}
public Emp(int empno,String ename,String job,double sal,double comm){
this.empno = empno:
this.ename = ename:
this.job = job:
this.sal = sal:
this.comm = comm:
}
public void setMgr(Emp mgr){
this.mgr = mgr:
}
public void setDept(Dept dept){
this.dept = dept:
}
public Emp getMgr(){
return this.mgr:
}
public Dept getDept(){
return this.dept:
}
//sgetter,getter 省略
public String getlnfo(){
return "雇员编号:"+this.empno
+", 姓名:"+this.ename
+",职位:"+this.job
+",工资:"+this.sal
+",佣金:"+this.comm:
}
}
class Dept{
private int deptno:
private String dname:
private String loc:
private Emp[] emps:
public Dept(){}
public Dept(int deptno,String dname,String loc){
this.deptno = deptno:
this.dname = dname:
this.loc = loc:
}
public void setEmps(Emp[] emps){
this,emps = emps:
}
public Emp getEmps(){
return this.emps:
}
//sgetter,getter 省略
public String getlnfo(){
return "部门:"+this.deptno
+",名称:"+this.dname
+",位置:"+this.loc:
} }
public class dataSheet{
public static void main(String args[]){
//第一步:要根据已有的表结构设置数据
// 1.准备好所有的独立的类对象
Dept dept = new Dept(10,"aACCOUNTING","New York",):
Emp empa = new Emp(7369,"SMITH","CLERK",800.0,0.0):
Emp empb = new Emp(7902,"FROD","MANAGER",2450.0,0.0):
Emp empc = new Emp(7839,"KING","PRESIDENT",5000.0,0.0):
//2.设置彼此的关系
// 设置雇员和领导的关系
empa.setMgr(empb):
empb.setMgr(empc):
// 设置部门关系
empa.setDept(dept):
empb.setDept(dept):
empc.setDept(dept):
// 一个部门包含多个雇员
dept.setEmps(new Emp[]{empa,empb,empc}):
}
}
第四步:取出雇员的完整数据和一个部门的完整信息:
根据已有的关系将数据设置完整(如果在实际开发之中要通过数据库读取)
根据已有的关系依赖
class Emp{
private int empno:
private String ename;
private String job:
private double sal:
private double comm:
private Emp mgr:// 雇员领导,一个雇员有一个领导
private Dept dept:// 一个雇员属于一个部门
public Emp(){}
public Emp(int empno,String ename,String job,double sal,double comm){
this.empno = empno:
this.ename = ename:
this.job = job:
this.sal = sal:
this.comm = comm:
}
public void setMgr(Emp mgr){
this.mgr = mgr:
}
public void setDept(Dept dept){
this.dept = dept:
}
public Emp getMgr(){
return this.mgr:
}
public Dept getDept(){
return this.dept:
}
//sgetter,getter 省略
public String getlnfo(){
return "雇员编号:"+this.empno
+", 姓名:"+this.ename
+",职位:"+this.job
+",工资:"+this.sal
+",佣金:"+this.comm:
}
}
class Dept{
private int deptno:
private String dname:
private String loc:
private Emp[] emps:
public Dept(){}
public Dept(int deptno,String dname,String loc){
this.deptno = deptno:
this.dname = dname:
this.loc = loc:
}
public void setEmps(Emp[] emps){
this,emps = emps:
}
public Emp getEmps(){
return this.emps:
}
//sgetter,getter 省略
public String getlnfo(){
return "部门:"+this.deptno
+",名称:"+this.dname
+",位置:"+this.loc:
} }
public class dataSheet{
public static void main(String args[]){
//第一步:要根据已有的表结构设置数据
// 1.准备好所有的独立的类对象
Dept dept = new Dept(10,"ACCOUNTING","New York",):
Emp empa = new Emp(7369,"SMITH","CLERK",800.0,0.0):
Emp empb = new Emp(7902,"FROD","MANAGER",2450.0,0.0):
Emp empc = new Emp(7839,"KING","PRESIDENT",5000.0,0.0):
//2.设置彼此的关系
// 设置雇员和领导的关系
empa.setMgr(empb):
empb.setMgr(empc):
// 设置部门关系
empa.setDept(dept):
empb.setDept(dept):
empc.setDept(dept):
// 一个部门包含多个雇员
dept.setEmps(new Emp[]{empa,empb,empc}):
// 第二步:根据数据表结构利用引用关系取得数据
System.out.println(empa.getlnfo()):// 输出雇员基本信息
System.out.println("\t|-【领导信息】"+empa.getMgr().getlnfo()):// 输出雇员领导信息
System.out.println("\t|-【部门信息】"+empa.getDept().getlnfo()): // 输出部门信息
System.out.println("\n*******************************************\n"):
System.out.println(dept.getlnfo): // 部门信息
for(int x = 0:x<dept.getEmps().length:x++){ // 取得部门的雇员
System.out.println("\t|-【雇员信息】"+dept.getEmps()[x].getlnfo()):
if(dept.getEmps()[x].getMgr()!=null){ // 有领导
System.out.println("\t|-【雇员领导】"+dept.getEmps()[x].getMgr().getlnfo()):
}
}
}
}
/*
结果:
雇员编号:7369,姓名:SMITH,职位:CLERK,工资:800.0,佣金:0.0
|-【领导信息】雇员编号:7902,姓名:FROD,职位:MANAGER,工资:2400.0,佣金:0.0
|-【部门信息】部门编号:10,名称:ACCOUNTING,位置:New York
*******************************************
部门编号:10,名称:ACCOUNTING,位置:New York
.............
*/
这种代码要像写简单java类那样熟练
菜鸡的Java笔记 数据表与简单java类映射的更多相关文章
- Java基础_0311: 数据表与简单Java类映射
数据表与简单Java类映射 现在假设有如下的关系表,现在要求实现如下的数据关联操作: 一个部门有多个雇员: 一个雇员有一个或零个领导 代码实现 class Dept { private int dep ...
- 数据表与简单java类映射转换
简单的Java类的定义来源于数据表的结构, 例如:雇员信息表.部门信息表描述的就是雇员或部门的信息, 在实际的开发之中,数据表和简单java类之间的映射关系如下: 1. 数据实体表设计 = 类的定义: ...
- 数据表与简单java类——多对多映射
给定一张Meber和Product表,得到如下信息: 1.获取一个用户访问的所有商品信息 2.获取一个商品被哪些用户浏览过的信息 package Mapping_transformation; cla ...
- 数据表与简单java类——一对多映射
例如:给定一个分类表和子分类表 得到如下信息: 1.一个分类的完整信息: 2.根据分类获取其对应的子分类 package Mapping_transformation; class item { pr ...
- Java中数据表的建立
class Emp{ private int empno;//职工编号 private String ename;//姓名 private String job;//职位 private double ...
- MySQL学习笔记 -- 数据表的基本操作
数据库是一个可以存放数据库对象的容器,数据库对象包括:表.视图.存储过程.函数.触发器.事件.其中,表是数据库最基本的元素,是其他数据库对象的前提条件. 表中的一列称为一个字段,一行称为一条记录. 1 ...
- hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)
绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xm ...
- mysql数据库和数据表的简单操作
一.数据库的增删改查 1.新建数据库 CREATE DATABASE 数据库名 charset utf8; 数据库名规则:可以由字母.数字.下划线.@.#.$ 区分大小写, 不能使用关键字如 crea ...
- Java笔记10:Struts2简单Demo
1 下载struts-2.3.24.1-all.zip并解压缩,位置任意,比如我的位置是D:\Download\Java\struts-2.3.24.1 解压缩D:\Download\Java\str ...
随机推荐
- 模拟赛T2 交换 解题报告
模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...
- 2020.10.9--vj个人赛补题
B - A Tide of Riverscape 题意:给出一组字符串,由'0','1',' . '组成,' . '可以换成 0或1,判断第 i 个和第 i+p 个字符是否可以不相等,如果可以则输出 ...
- Docker--harbor私有仓库部署与管理
目录 一.Harbor简介 二.Harbor 部署 三.维护管理Harbor 一.Harbor简介 1.什么是Harbor ? Harbor 是 VMware 公司开源的企业级 Docker Re ...
- 微信h5跳转小程序wx-open-launch-weapp开放标签不显示(已解决)
前言: 前几天成功对接了跳转第三方小程序的功能,今天有个页面有需要对接.但是奇怪的是用的和上次一模一样的配置,但就是死活不显示wx-open-launch-weapp这个开放标签的按钮,看不到任何效果 ...
- Framework - 性能统计
摘要 近期对接客户时,客户方希望提供 SDK 的性能.内存.隐私支持等一些数据,所以就对 SDK 进行了一些性能测试. 在用表格统计整理这些数据时,突然发现,经常用统计的方式看 SDK 的相关数据,似 ...
- 【数据结构与算法Python版学习笔记】递归(Recursion)——优化问题与策略
分治策略:解决问题的典型策略,分而治之 将问题分为若干更小规模的部分 通过解决每一个小规模部分问题,并将结果汇总得到原问题的解 递归算法与分治策略 递归三定律 体现了分支策略 应用相当广泛 排序 查找 ...
- VMware虚拟机安装Linux
我们都知道,Linux的学习如果依靠大量的物理真机,是不切实际的,会非常的麻烦. 今天来和分享一下VMware虚拟机安装Linux操作系统的方法 (centos 7) 1. 我们要先把VMware虚 ...
- 第0次 Beta Scrum Meeting
本次会议为Beta阶段第0次Scrum Meeting会议 会议概要 会议时间:2021年5月27日 会议地点:「腾讯会议」线上进行 会议时长:1小时 会议内容简介:本次会议为Beta阶段启程会议,主 ...
- .net,C#,Vb,F#,Asp,Asp.net区别以及作用和方向
.net是平台,其他都是运行在其.NET FrameWork环境下的 C#,Vb都是语言运行在.net 平台下 Asp,Asp.net 都是用来写Web网页的,但是Asp和Asp.net有区别 Asp ...
- 2021.8.5考试总结[NOIP模拟31]
暴力打满直接rk3? T1 Game 想了一万种贪心和两万种$hack$. 可以先用最显然的贪心求出最高得分是多少.(从小到大用最小的大于$b_i$的$a$得分) 然后用一棵权值线段树维护值域内$a$ ...