java易错点

  • 数组初始化的时候,可以用 {} 赋值,初始化以后,只能用 new Object[] 赋值了 ;

  • set 集合的 add()addAll() 方法,前者将集合作为整体保存到集合中,后者将集合中的每一个元素保存到集合中;


一对多 VS 多对一 VS 多对多

表的关系,具体是选择 一对多多对一 还是 多对多,在查询显示的时候,怎么显示,主要看我们的实际需求,显示一方的时候,是否需要显示另一方

比如员工和部门的例子,部门表和员工表,就不应该选择 双向绑定 关系;因为在展示部门的时候,不需要将其下面的员工全部显示出来的;

还有一点,就是多的一方数据很多,我们需要采用分页的技术进行显示;

一对多 尽量避免,除非非要使用(比如订单)。使用的时候要注意数据量问题;


级联

·如果没设置级联,则需要先将依赖表的外键列置空。才能删除被依赖表 ;

·设置了级联 (当删除被依赖表的记录时候,会自动将依赖表的外键列置空 )

set null :当外键依赖被删除的时候,会自动将外键列置空 ;

cascard : 当外键依赖被删除的时候 ,外键所在记录也会被删除 ;


多表增删改

·一对多 (部门与员工)

    其实也可以使用面向对象的思想设计表,但是我们查找多方的时候,注意下,是否需要查找 ;

·多对多 (学生与老师)

    查询老师的学生,真正的多表操作 ,先去中间表查询该老师有哪些学生id,再去学生表,查找对应id的学生;

·查询:(无论什么关系。多对多、一对多。。。我们在设计对象的时候,在少的一方,里面都设计上集合存储多的一方,但是查询的时候,根据情况绝对是否真的要查询 ;)

·一对多:不需要多表查询;显示与不显示多的一方,只是sql条数的问题 ;

·多对多:如果需要显示多方的数据,则需要多表查询;

·查询的时候,如果不要求显示多的一方,则直接单表查询出少的一方;

·如果明确需要一并显示多的一方,则继续查询,查询的逻辑,就写在查询之前类的dao里面;

    比如:老师与学生 ;在查询老师的时候,如果需要需要显示老师对应的学生,则继续在老师的Dao里面继续写逻辑 ;

·插入:

    ·一对多:可以在少的一方的dao层插入,也可以在多方dao层导入 ;

    ·多对多:一般写在少的一方的dao层里面,更新关系表,也写在这,减少代码量。

---------------------------------------------------------------------------------
| |
| 备注:对于设计到多个表,我也不太清楚dao层是如如何设计的;2018年6月14日23:02:22 |
| |
---------------------------------------------------------------------------------

多对多表设计语句(学生老师)

// 学生表
create table student
(
id int ,
name varchar(10)
); // 老师表
create table teacher
(
id int,
name varchar(10),
money float
) ; // 中间表,设置了级联
create table teacher_student
(
teacher_id int,
student_id int,
constraint teacher_id_FK foreign key(teacher_id) references teacher(id) on delete cascade,
constraint student_id_FK foreign key(student_id) references student(id) on delete cascade
);

(二十五)JDBC多表查询的更多相关文章

  1. 夯实Java基础(二十五)——JDBC使用详解

    1.JDBC介绍 JDBC的全称是Java Data Base Connectivity(Java数据库连接).是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问(例如MyS ...

  2. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  3. FreeSql (十九)多表查询

    多表查询,常用的有联表 LeftJoin/InnerJoin/RightJoin ,这三个方法在上篇文章已经介绍过. 除了联表,还有子查询 Where Exists,和 Select 子表: IFre ...

  4. FreeSql (二十五)延时加载

    FreeSql 支持导航属性延时加载,即当我们需要用到的时候才进行加载(读取),支持1对1.多对1.1对多.多对多关系的导航属性. 当我们希望浏览某条订单信息的时候,才显示其对应的订单详细记录时,我们 ...

  5. Bootstrap <基础二十五>警告(Alerts)

    警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...

  6. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  7. 无废话ExtJs 入门教程十五[员工信息表Demo:AddUser]

    无废话ExtJs 入门教程十五[员工信息表Demo:AddUser] extjs技术交流,欢迎加群(201926085) 前面我们共介绍过10种表单组件,这些组件是我们在开发过程中最经常用到的,所以一 ...

  8. VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池

    VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池 终端服务池是指由一台或多台微软终端服务器提供服务的桌面源组成的池.终端服务器桌面源可交付多个桌面.它具有以下特征: 1.终端 ...

  9. WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]

    原文:WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇] 在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy.WS-Tra ...

  10. Bootstrap入门(二十五)JS插件2:过渡效果

    Bootstrap入门(二十五)JS插件2:过渡效果 对于简单的过渡效果,只需将 transition.js 和其它 JS 文件一起引入即可.如果你使用的是编译(或压缩)版的bootstrap.js  ...

随机推荐

  1. Magic Points ZOJ - 4032

    The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple Magic Points ZOJ - ...

  2. Simple Problem with Integers(POJ 3486)

                                                                  A Simple Problem with Integers Time Li ...

  3. jumpserver官方手动安装

    测试环境 CPU: 64位双核处理器 内存: 4G DDR3 数据库:mysql 版本大于等于 5.6 mariadb 版本大于等于 5.5.6 环境 系统: CentOS 7 IP: 192.168 ...

  4. CF1208A

    CF1208A 题意: 就是把斐波那契数列的+改成异或,求第n项的值. 解法: 又是一个人类智慧题,打表找规律. 可以发现答案在 $ a,b,a⊕b $ 三个数中循环 CODE: #include&l ...

  5. 5.3.3 自定义writable和RawComparatorWritable

    5.3.3 自定义writable (1)构造员工writable Hadoop虽然已经实现了一些非常有用的Writable,而且你可以使用他们的组合做很多事情,但是如果你想构造一些更加复杂的结果,你 ...

  6. Raspberry Pi 4B FTP服务器配置

    目录 1. 安装vsftpd并启动 2. 编辑配置文件 3. 重启服务 4. 测试 5. 为Web服务器添加管理员账户,便于通过ftp网站信息 参考资料:树莓派(raspberry pi)学习之安装f ...

  7. nginx使用certbot配置https

    一般现在的网站都要支持https,即安全的http. 机器:阿里云Ubuntu 16.04.3 LTS 方案一:自己申请证书 配置时需要确保有ssl模块, 之后域名解析下, 之后时申请证书,可以去阿里 ...

  8. Flutter实现TabBarView切换页面时每个页面只initState一次

    在  TabBarView  组件中切换页面时,子页面每次均会重新  initState  一次,导致每次都切换页面均会重绘,如下图 如果需要只在第一次进页面  initState  一次,后面再进入 ...

  9. 移动端——页面点击( touchend -> click)

    手机端页面好多要注意的,点击事件就是其中一个: 在手机端页面中使用 click,安卓手机能正常实现点击效果,可是苹果手机不能点击:用 touchend 代替 click,苹果手机中能点击,但是可能出现 ...

  10. 【Python】对我自己的博客进行统计,看看哪年哪月发帖量最大

    代码很简单,主要利用了requests进行网络访问,beautifulSoup进行页面文本分析,re进行正则表达式抽取文字,前面两个需要pip install name去安装,后者是内部对象所以不用安 ...