11.4.6 集合嵌套查询与嵌套结果(结果集) -《SSM深入解析与项目实战》

11.4.6  集合嵌套查询与嵌套结果(结果集) -《SSM深入解析与项目实战》

项目中所有的源码都可以在此链接的仓库中找到:https://github.com/chenhaoxiang/uifuture-ssm

11.4.6  集合嵌套查询与嵌套结果

先来创建两个表,再进行下面的讲解。SQL语句如代码清单11-35所示。

博客与文章表SQL

代码清单11-35:博客与文章表SQL

DROP TABLE IF EXISTS `blog`;
CREATE TABLE `blog` (
`id` int
谙忆 CSDN认证博客专家 Java
公众号:程序编程之旅。曾经写过C、C++,使用过Cocos2dx开发过游戏、安卓端、IOS端、PC端页面均开发过。目前专注Java开发,SaaS内核、元数据的研究。偶尔玩玩爬虫
已标记关键词 清除标记
第一部分 背景知识 第1章 应重视的价值,也是对过去几年的沉重反思 1.1 总体价值 1.2 应重视的架构风格 1.2.1 焦点之一:模型 1.2.2 焦点之二:用例 1.2.3 如果重视模型,就可以使用领域模型模式 1.2.4 慎重处理数据库 1.2.5 领域模型与关系数据库之间的阻抗失配 1.2.6 谨慎处理分布式 1.2.7 消息传递很重要 1.3 对过程的各个组成部分的评价 1.3.1 预先架构设计 1.3.2 领域驱动设计 1.3.3 测试驱动开发 1.3.4 重构 1.3.5 选择一种还是选择组合 1.4 持续集成 1.4.1 解决方案(或至少是正确方向上的一大步) 1.4.2 从我的组织汲取的教训 1.4.3 更多信息 1.5 不要忘记运行机制 1.5.1 有关何时需要运行机制的一个例子 1.5.2 运行机制的一些例子 1.5.3 它不仅仅是我们的过错 1.6 小结 第2章 模式起步 2.1 模式概述 2.1.1 为什么要学习模式 2.1.2 在模式方面要注意哪些事情 2.2 设计模式 2.3 架构模式 2.3.1 示例:层 2.3.2 另一个示例:领域模型模式 2.4 针对具体应用程序类型的设计模式 2.5 领域模式 2.6 小结 第3章 TDD与重构 3.1 TDD 3.1.1 TDD流程 3.1.2 演示 3.1.3 设计效果 3.1.4 问题 3.1.5 下一个阶段 3.2 模拟和桩 3.2.1 典型单元测试 3.2.2 声明独立性 3.2.3 处理困难因素 3.2.4 用测试桩替换协作对象 3.2.5 用模拟对象替换协作对象 3.2.6 设计含义 3.2.7 结论 3.2.8 更多信息 3.3 重构 3.4 小结 第二部分 应用DDD 第4章 新的默认架构 4.1 新的默认架构的基础知识 4.1.1 从以数据库为中心过渡到以领域模型为中心 4.1.2 进一步关注DDD 4.1.3 根据DDD进行分层 4.2 轮廓 4.2.1 领域模型示例的问题/特性 4.2.2 逐个处理特性 4.2.3 到目前为止的领域模型 4.3 初次尝试将UI与领域模型挂接 4.3.1 基本目标 4.3.2 简单UI的当前焦点 4.3.3 为客户列出订单 4.3.4 添加订单 4.3.5 刚才我们看到了什么 4.4 另一个维度 4.4.1 领域模型的位置 4.4.2 孤立或共享的实例 4.4.3 有状态或无状态领域模型实例化 4.4.4 领域模型的完整实例化或子集实例化 4.5 小结 第5章 领域驱动设计进阶 5.1 通过简单的TDD实验来精化领域模型 5.1.1 从Order和OrderFactory的创建开始 5.1.2 一些领域逻辑 5.1.3 第二个任务:OrderRepository+OrderNumber 5.1.4 重建持久化的实体:如何从外部设置值 5.1.5 获取订单列表 5.1.6 该到讨论实体的时候了 5.1.7 再次回到流程上来 5.1.8 总览图 5.1.9 建立OrderRepository的伪实现 5.1.10 简单讨论一下保存 5.1.11 每个订单的总量 5.1.12 历史客户信息 5.1.13 实例的生命周期 5.1.14 订单类型 5.1.15 订单的介绍人 5.2 连贯接口 5.3 小结 第6章 准备基础架构 6.1 将POCO作为工作方式 6.1.1 实体和值对象的PI 6.1.2 是否使用PI 6.1.3 运行时与编译时PI 6.1.4 PI实体/值对象的代价 6.1.5 将PI用于存储库 6.1.6 单组存储库的代价 6.2 对保存场景的处理 6.3 建立伪版本机制 6.3.1 伪版本机制的更多特性 6.3.2 伪版本的实现 6.3.3 影响单元测试 6.4 数据库测试 6.4.1 在每次测试之前重置数据库 6.4.2 在测试运行期间保持数据库的状态 6.4.3 测试之前重置测试所使用的数据 6.4.4 不要忘记不断演变的模式 6.4.5 分离单元测试和数据库调用测试 6.5 查询 6.5.1 单组查询对象 6.5.2 单组查询对象的代价 6.5.3 将查询定位到哪里 6.5.4 再次将聚合作为工具 6.5.5 将规格用于查询 6.5.6 其他查询选择 6.6 小结 第7章 应用规则 7.1 规则的分类 7.2 规则的原则及用法 7.2.1 双向规则检查:可选的(可能的)主动检查,必需的(和自动的)被动检查 7.2.2 所有状态(即使是错误状态)都应该是可保存的 7.2.3 规则应该高效使用 7.2.4 规则应该是可配置的,以便添加自定义规则 7.2.5 规则应与状态放在一起 7.2.6 规则应该具有很高的可测试性 7.2.7 系统应阻止我们进入错的状态 7.3 开始创建API 7.3.1 上下文,上下文,还是上下文 7.3.2 数据库约束 7.3.3 将规则绑定到与领域有关的转换,还是绑定到与基础架构有关的转换 7.3.4 精化原则:所有状态,即使是错误状态,都应该是可保存的 7.4 与持久化有关的基本的规则API的需求 7.4.1 回到已发现的API问题上 7.4.2 问题是什么 7.4.3 我们允许了不正确的转换 7.4.4 如果忘记检查怎么办 7.5 关注与领域有关的规则 7.5.1 需要合作的规则 7.5.2 使用基于集合的处理方法 7.5.3 基于服务的验证 7.5.4 在不应该转换时尝试转换 7.5.5 业务ID 7.5.6 避免问题 7.5.7 再次将聚合作为工具 7.6 扩展API 7.6.1 查询用于设置UI的规则 7.6.2 使注入规则成为可能 7.7 对实现进行精化 7.7.1 一个初步实现 7.7.2 创建规则类,离开最不成熟的阶段 7.7.3 设置规则列表 7.7.4 使用规则列表 7.7.5 处理子列表 7.7.6 一个API改进 7.7.7 自定义 7.7.8 为使用者提供元数据 7.7.9 是否适合用模式来解决此问题 7.7.10 复杂规则又是什么情况 7.8 绑定到持久化抽象 7.8.1 使验证接口成为可插入的 7.8.2 在保存方面实现被动验证的替代解决方案 7.8.3 重用映射元数据 7.9 使用泛型和匿名方法 7.10 其他人都做了什么 7.11 小结 第三部分 应用PoEAA 第8章 用于持久化的基础架构 8.1 持久化基础架构的需求 8.2 将数据存储到哪里 8.2.1 RAM 8.2.2 文件系统 8.2.3 对象数据库 8.2.4 关系数据库 8.2.5 使用一个还是多个资源管理器 8.2.6 其他因素 8.2.7 选择和前进 8.3 方法 8.3.1 自定义手工编码 8.3.2 自定义代码的代码生成 8.3.3 元数据映射(对象关系(O/R)映射工具) 8.3.4 再次选择 8.4 分类 8.4.1 领域模型风格 8.4.2 映射工具风格 8.4.3 起点 8.4.4 API焦点 8.4.5 查询风格 8.4.6 高级数据库支持 8.4.7 其他功能 8.5 另一个分类:基础架构模式 8.5.1 元数据映射:元数据的类型 8.5.2 标识字段 8.5.3 外键映射 8.5.4 嵌入值 8.5.5 继承解决方案 8.5.6 标识映射 8.5.7 操作单元 8.5.8 延迟加载/立即加载 8.5.9 并发控制 8.6 小结 第9章 应用NHibernate 9.1 为什么使用NHibernate 9.2 NHibernate简介 9.2.1 准备 9.2.2 一些映射元数据 9.2.3 一个小的API示例 9.2.4 事务 9.3 持久化基础架构的需求 9.3.1 高级持久化透明 9.3.2 持久化实体的生命周期所需的特定特性 9.3.3 谨慎处理关系数据库 9.4 分类 9.4.1 领域模型风格 9.4.2 映射工具风格 9.4.3 起点 9.4.4 API焦点 9.4.5 查询语言风格 9.4.6 高级数据库支持 9.4.7 其他功能 9.5 另一种分类:基础架构模式 9.5.1 元数据映射:元数据类型 9.5.2 标识字段 9.5.3 外键映射 9.5.4 嵌入值 9.5.5 继承解决方案 9.5.6 标识映射 9.5.7 操作单元 9.5.8 延迟加载/立即加载 9.5.9 并发性控制 9.5.10 额外功能:验证挂钩 9.6 NHibernate和DDD 9.6.1 程序集概览 9.6.2 ISession和存储库 9.6.3 ISession、存储库和事务 9.6.4 得到了什么结果 9.7 小结 第四部分 下一步骤 第10章 博采其他设计技术 10.1 上下文为王 10.1.1 层和分区 10.1.2 分区的原因 10.1.3 限界上下文 10.1.4 限界上下文与分区有何关联 10.1.5 向上扩展DDD项目 10.1.6 为什么对领域模型——SO分区 10.2 SOA简介 10.2.1 什么是SOA 10.2.2 为什么需要SOA 10.2.3 SOA有什么不同 10.2.4 什么是服务 10.2.5 服务中包括什么 10.2.6 深入分析4条原则 10.2.7 再来看一下什么是服务 10.2.8 OO在SOA中的定位 10.2.9 客户-服务器和SOA 10.2.10 单向异步消息传递 10.2.11 SOA如何提高可伸缩性 10.2.12 SOA服务的设计 10.2.13 服务之间如何交互 10.2.14 SOA和不可用的服务 10.2.15 复杂的消息传递处理 10.2.16 服务的可伸缩性 10.2.17 小结 10.3 控制反转和依赖注入 10.3.1 任何对象都不是孤岛 10.3.2 工厂、注册类和服务定位器 10.3.3 构造方法依赖注入 10.3.4 setter依赖注入 10.3.5 控制反转 10.3.6 使用了Spring.NET框架的依赖注入 10.3.7 利用PicoContainer.NET进行自动装配 10.3.8 嵌套容器 10.3.9 服务定位器与依赖注入的比较 10.3.10 小结 10.4 面向方面编程 10.4.1 热门话题有哪些 10.4.2 AOP术语定义 10.4.3 .NET中的AOP 10.4.4 小结 10.5 小结 第11章 关注UI 11.1 提前结语 11.2 模型-视图-控制器模式 11.2.1 示例:Joe的Shoe Shop程序 11.2.2 通过适配器简化视图界面 11.2.3 将控制器从视图解耦 11.2.4 将视图和控制器结合起来 11.2.5 是否值得使用MVC 11.3 测试驱动的Web窗体 11.3.1 背景 11.3.2 一个示例 11.3.3 领域模型 11.3.4 GUI的TDD 11.3.5 Web窗体实现 11.3.6 小结 11.3.7 用NMock创建模拟 11.4 映射和包装 11.4.1 映射和包装 11.4.2 用表示模型来包装领域模型 11.4.3 将表示模型映射到领域模型 11.4.4 管理关系 11.4.5 状态问题 11.4.6 最后的想法 11.5 小结 11.6 结束语 第五部分 附录 附录A 其他领域模型风格 附录B 已讨论的模式的目录
相关推荐
《Spring实战(第3版)》从核心的Spring、Spring应用程序的核心组件、Spring集成3个方面,由浅入深、由易到难地对Spring展开了系统的讲解,包括Spring之旅、装配Bean、最小化Spring XML配置、面向切面的Spring、征服数据库、事务管理、使用Spring MVC构建Web应用程序、使用Spring Web Flow、保护Spring应用、使用远程服务、为Spring添加REST功能、Spring消息、使用JMX管理Spring Bean以及其他Spring技巧等内容。   《Spring实战(第3版)》不仅仅介绍了使用Spring框架进行开发必须掌握的核心概念,还在此基础上深入介绍了Spring应用程序的常用组件,并为读者展现了Spring如何与其他的应用、服务进行企业级集成。本书并不没有为读者详细地列出Spring API,而是通过提供丰富又实用的代码示例,来真正展示Spring框架的强大──它能够使企业级应用程序的开发更简单。 第一部分 Spring 的核心 第1 章 Spring 之旅 1.1 简化Java 开发 1.1.1 激发POJO 的潜能 1.1.2 依赖注入 1.1.3 应用切面 1.1.4 使用模板消除样板式代码 1.2 容纳你的Bean 1.2.1 与应用上下文共事 1.2.2 Bean 的生命周期 1.3 俯瞰Spring 风景线 1.3.1 Spring 模块 1.3.2 Spring Portfolio 1.4 Spring 新功能 1.4.1 Spring 2.5 新特性 1.4.2 Spring 3.0 新特性 1.4.3 Spring Portfollo 新特性 1.5 小结 第2 章 装配Bean 2.1 声明Bean 2.1.1 创建Spring 配置 2.1.2 声明一个简单Bean 2.1.3 通过构造器注入 2.1.4 Bean 的作用域 2.1.5 初始化和销毁Bean 2.2 注入Bean 属性 2.2.1 注入简单值 2.2.2 引用其他Bean 2.2.3 使用Spring 的命名空间p 装配属性 2.2.4 装配集合 2.2.5 装配空值 2.3 使用表达式装配 2.3.1 SpEL 的基本原理 2.3.2 在SpEL 值上执行操作 2.3.3 在SpEL 中筛选集合 2.4 小结 第3 章 最小化Spring XML 配置 3.1 自动装配Bean 属性 3.1.1 4 种类型的自动装配 3.1.2 默认自动装配 3.1.3 混合使用自动装配和显式装配 3.2 使用注解装配 3.2.1 使用@Autowired 3.2.2 借助@Inject 实现基于标准的自动装配 3.2.3 在注解注入中使用表达式 3.3 自动检测Bean 3.3.1 为自动检测标注Bean 3.3.2 过滤组件扫描 3.4 使用Spring 基于Java的配置 3.4.1 创建基于Java 的配置 3.4.2 定义一个配置类 3.4.3 声明一个简单的Bean 3.4.4 使用Spring 的基于Java 的配置进行注入 3.5 小结 第4 章 面向切面的Spring 4.1 什么是面向切面编程 4.1.1 定义AOP 术语 4.1.2 Spring 对AOP 的支持 4.2 使用切点选择连接点 4.2.1 编写切点 4.2.2 使用Spring 的bean()指示器 4.3 在XML 中声明切面 4.3.1 声明前置和后置通知 4.3.2 声明环绕通知 4.3.3 为通知传递参数 4.3.4 通过切面引入新功能 4.4 注解切面 4.4.1 注解环绕通知 4.4.2 传递参数给所标注的通知 4.4.3 标注引入 4.5 注入AspectJ 切面 4.6 小结 第二部分 Spring 应用程序的核心组件 第5 章 征服数据库 5.1 Spring 的数据访问哲学 5.1.1 了解Spring 的数据访问异常体系 5.1.2 数据访问模板化 5.1.3 使用DAO 支持类 5.2 配置数据源 5.2.1 使用JNDI 数据源 5.2.2 使用数据源连接池 5.2.3 基于JDBC驱动的数据源 5.3 在Spring 中使用JDBC 5.3.1 应对失控的JDBC 代码 5.3.2 使用JDBC 模板 5.4 在Spring 中集成Hibernate 5.4.1 Hibernate 概览 5.4.2 声明Hibernate 的Session工厂 5.4.3 构建不依赖于Spring的Hibernate代码 5.5 Spring 与Java 持久化API 5.5.1 配置实体管理器工厂 5.5.2 编写基于JPA 的DAO 5.6 小结 第6 章 事务管理 6.1 理解事务 6.1.1 用4 个词来表示事务 6.1.2 理解Spring 对事务管理的支持 6.2 选择事务管理器 6.2.1 JDBC 事务 6.2.2 Hibernate 事务 6.2.3 Java 持久化API 事务 6.2.4 JTA(Java Transaction API)事务 6.3 在Spring 中的编码事务 6.4 声明式事务 6.4.1 定义事务属性 6.4.2 在XML 中定义事务 6.4.3 定义注解驱动的事务 6.5 小结 第7 章 使用Spring MVC 构建Web 应用程序 7.1 Spring MVC 起步 7.1.1 跟踪Spring MVC 的请求 7.1.2 搭建Spring MVC 7.2 编写基本的控制器 7.2.1 配置注解驱动的Spring MVC 7.2.2 定义首页的控制器 7.2.3 解析视图 7.2.4 定义首页的视图 7.2.5 完成Spring 应用上下文 7.3 处理控制器的输入 7.3.1 编写处理输入的控制器 7.3.2 渲染视图 7.4 处理表单 7.4.1 展现注册表单 7.4.2 处理表单输入 7.4.3 校验输入 7.5 处理文件上传 7.5.1 在表单上添加文件上传域 7.5.2 接收上传的文件 7.5.3 配置Spring 支持文件上传 7.6 小结 第8 章 使用Spring Web Flow 8.1 安装Spring Web Flow 8.1.1 在Spring 中使用Web Flow 8.2 流程的组件 8.2.1 状态 8.2.2 转移 8.2.3 流程数据 8.3 组合起来:披萨流程 8.3.1 定义基本流程 8.3.2 收集顾客信息 8.3.3 构建订单 8.3.4 支付 8.4 保护Web 流程 8.5 小结 第9 章 保护Spring 应用 9.1 Spring Security 介绍 9.1.1 Spring Security 起步 9.1.2 使用Spring Security 配置命名空间 9.2 保护Web 请求 9.2.1 代理Servlet 过滤器 9.2.2 配置最小化的Web安全性 9.2.3 拦截请求 9.3 保护视图级别的元素 9.3.1 访问认证信息的细节 9.3.2 根据权限渲染 9.4 认证用户 9.4.1 配置内存用户存储库 9.4.2 基于数据库进行认证 9.4.3 基于LDAP 进行认证 9.4.4 启用remember-me 功能 9.5 保护方法调用 9.5.1 使用@Secured 注解保护方法调用 9.5.2 使用JSR-250 的@RolesAllowed注解 9.5.3 使用SpEL 实现调用前后的安全性 9.5.4 声明方法级别的安全性切点 9.6 小结 第三部分 Spring 集成 第10 章 使用远程服务 10.1 Spring 远程调用概览 10.2 使用RMI 10.2.1 发布一个RMI 服务 10.2.2 装配RMI服务 10.3 使用Hessian 和Burlap发布远程服务 10.3.1 使用Hessian和Burlap发布Bean 的功能 10.3.2 访问Hessian/Burlap 服务 10.4 使用Spring的HttpInvoker 10.4.1 将把Bean 发布为HTTP服务 10.4.2 通过HTTP 访问服务 10.5 发布和使用Web 服务 10.5.1 创建JAX-WS 端点 10.5.2 在客户端代理JAX-WS服务 10.6 小结 第11 章 为Spring 添加REST功能 11.1 了解REST 11.1.1 REST 的基本原理 11.1.2 Spring 是如何支持REST 的 11.2 编写面向资源的控制器 11.2.1 剖析RESTless 的控制器 11.2.2 处理RESTful URL 11.2.3 执行REST 动作 11.3 表述资源 11.3.1 协商资源表述 11.3.2 使用HTTP 信息转换器 11.4 编写REST 客户端 11.4.1 了解RestTemplate的操作 11.4.2 GET 资源 11.4.3 PUT 资源 11.4.4 DELETE 资源 11.4.5 POST 资源数据 11.4.6 交换资源 11.5 提交RESTful 表单 11.5.1 在JSP 中渲染隐藏的方法域 11.5.2 发布真正的请求 11.6 小结 第12 章 Spring 消息 12.1 JMS 简介 12.1.1 构建JMS 12.1.2 评估JMS 的优点 12.2 在Spring 中搭建消息代理 12.2.1 创建连接工厂 12.2.2 声明ActiveMQ 消息目的地 12.3 使用Spring 的JMS 模板 12.3.1 处理失控的JMS 代码 12.3.2 使用JMS 模板 12.4 创建消息驱动的POJO 12.4.1 创建消息监听器 12.4.2 配置消息监听器 12.5 使用基于消息的RPC 12.5.1 使用Spring 基于消息的RPC 12.5.2 使用Lingo 实现异步RPC 12.6 小结 第13 章 使用JMX 管理Spring Bean 13.1 将Spring Bean 导出为MBean 13.1.1 通过名称发布方法 13.1.2 使用接口定义MBean 的操作和属性 13.1.3 使用注解驱动的MBean 13.1.4 处理MBean 冲突 13.2 远程MBean 13.2.1 发布远程MBean 13.2.2 访问远程MBean 13.2.3 代理MBean 13.3 处理通知 13.3.1 监听通知 13.4 小结 第14 章 其他Spring 技巧 14.1 外部化配置 14.1.1 替换属性占位符 14.1.2 重写属性 14.1.3 加密外部属性 14.2 装配JNDI 对象 14.2.1 JNDI 的传统用法 14.2.2 装配JNDI 对象 14.2.3 将EJB 装配到Spring 中 14.3 发送邮件 14.3.1 配置邮件发送器 14.3.2 构建邮件 14.4 调度和后台任务 14.4.1 声明调度方法 14.4.2 声明异步方法 14.5 小结 14.6 结束语
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值