书海网短评:
适读人群:本书适合有较好的Java编程基础,JSP、Servlet、JDBC基础,Spring框架基础的读者,尤其适合于对SpringMVC和MyBatis了解不够深入,或对SpringMVC+MyBatis整合开发不太熟悉的开发
1.基于SpringMVC5+MyBatis3.4.5全新升级。
2.提供配套代码及微信、QQ群答疑服务。
3.贴近实际项目,以案例驱动
《Spring+MyBatis企业应用实战(第2版)》针对每一个知识点都通过相应的程序给出了示范,所有应用范例都密切契合企业开发实际场景,例如用户权限验证、文件上传下载等都是企业开发实际功能,同时采用了目前企业流行、规范的开发架构,严格遵守JavaEE开发规范。读者参考《Spring+MyBatis企业应用实战(第2版)》的架构,完全可以身临其境地感受企业实际项目开发。
4.内容深入,讲解细致
《Spring+MyBatis企业应用实战(第2版)》的特点是操作步骤详细,编程思路清晰,语言平实易懂。只要读者认真阅读《Spring+MyBatis企业应用实战(第2版)》,并掌握书中知识,那么就完全可以胜任企业中SpringMVC+MyBatis项目开发的要求。
《Spring+MyBatis企业应用实战》主要介绍介绍了JavaEE领域的两个开源框架:SpringMVC和MyBatis。其中Spring的版本为5.0,MyBatis的版本是3.4.5。《Spring+MyBatis企业应用实战(第2版)》的示例建议在Tomcat8上运行。
《Spring+MyBatis企业应用实战》详细介绍如何整合SpringMVC5+MyBatis3.4.5进行Web应用开发,主要包括三个部分:
第一部分详细介绍了SpringMVC框架的用法。
第二部分详细介绍了MyBatis框架的用法。
第三部分重点介绍了SpringMVC5+MyBatis3.4.5的整合,并示范开发了一个包含6个表、表之间具有复杂的关联映射关系,且业务功能也相对完善的HRM人事管理系统案例,希望让读者理论联系实际,将这两个框架真正运用到实际开发当中去。该案例采用目前流行、规范的JavaEE架构,整个应用分为DAO持久层、领域对象层、业务逻辑层、控制器层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。
所有代码完全基于EclipseIDE来完成,一步步带领读者深入两个框架的核心。
疯狂软件,多年来从事Java开发、移动开发等方面的培训及研发工作,承接大型研发项目。疯狂软件是广州为学教育科技有限公司的教育品牌,立志以务实的技术来改变中国的软件教育,所培训的学生入职华为、阿里软件、唯品会、网易、IBM等IT名企。
第1章 JavaEE应用1
1.1 JavaEE应用概述2
1.1.1 JavaEE应用的分层模型2
1.1.2 JavaEE应用的组件3
1.1.3 JavaEE应用的结构和优势4
1.2 轻量级JavaEE应用相关技术4
1.2.1 JSP、Servlet和JavaBean及替代技术4
1.2.2 MyBatis3及替代技术5
1.2.3 Spring5及替代技术6
1.2.4 使用开源框架的好处7
1.3 本章小结7
第2章 SpringMVC简介8
2.1 MVC思想概述9
2.1.1 传统Model1和Model29
2.1.2 MVC思想及其优势10
2.2 Struts2和SpringMVC11
2.2.1 SpringMVC的优势11
2.2.2 SpringMVC和Struts2的区别11
2.3 开发第一个SpringMVC应用12
2.3.1 Spring的下载和安装12
2.3.2 SpringMVC的DispatcherServlet13
2.3.3 基于Controller接口的控制器14
示例:第一个SpringMVC应用14
示例:基于注解的控制器18
2.4 详解DispatcherServlet20
2.5 SpringMVC执行的流程22
2.5.1 SpringMVC应用的开发步骤22
2.5.2 SpringMVC执行的流程24
2.6 本章小结25
第3章 SpringMVC的常用注解26
3.1 @Controller注解27
示例:@Controller注解的使用27
3.2 @RequestMapping注解29
3.2.1 @RequestMapping注解简介29
3.2.2 请求处理方法中可出现的参数类型32
3.2.3 请求处理方法可返回的类型33
3.2.4 Model和ModelMap33
示例:Model和ModelMap的使用34
3.2.5 ModelAndView35
示例:ModelAndView的使用35
3.2.6 页面转发35
3.3 @RequestParam注解36
示例:@RequestMapping和@RequestParam注解的使用37
3.4 @PathVariable注解41
3.5 @MatrixVariable注解42
3.6 @CrossOrigin注解42
示例:@PathVariable注解和@MatrixVariable注解的使用43
示例:@CrossOrigin注解的使用45
3.7 @RequestHeader注解46
示例:@RequestHeader注解的使用47
3.8 @CookieValue注解48
示例:@CookieValue注解的使用49
3.9 @RequestAttribute注解50
3.10 @SessionAttribute注解50
示例:@RequestAttribute注解和@SessionAttribute注解的使用51
3.11 @SessionAttributes注解53
示例:@SessionAttributes注解的使用53
3.12 @ModelAttribute注解55
示例:@ModelAttribute注解的使用55
3.13 @RequestBody注解62
3.13.1 HttpMessageConverter<T>接口62
3.13.2 转换JSON数据64
示例:@RequestBody接收JSON格式的数据65
示例:自定义HttpMessageConverter接收JSON格式的数据68
3.14 @ResponseBody注解70
示例:@ResponseBody返回JSON格式的数据70
示例:自定义HttpMessageConverter返回JSON格式的数据72
3.15 转换XML数据72
示例:接收XML格式的数据72
示例:返回XML格式的数据75
3.16 @RestController注解76
示例:@RestController注解的使用76
3.17 SpringMVC的异常处理77
3.17.1 SpringMVC异常处理接口以及实现类77
示例:SimpleMappingExceptionResolver处理异常78
3.17.2@ResponseStatus注解82
示例:@ResponseStatus处理异常82
3.17.3 @ExceptionHandle注解84
示例:@ExceptionHandler处理异常84
3.17.4 @ControllerAdvice注解87
示例:@ControllerAdvice处理异常87
3.17.5 @RestControllerAdvice注解91
示例:@RestControllerAdvice注解的使用91
3.18 本章小结92
第4章 SpringMVC的标签库93
4.1 表单标签库94
4.1.1 form标签94
4.1.2 input标签95
示例:form和input标签的使用95
4.1.3 password标签97
4.1.4 hidden标签98
4.1.5 textarea标签98
4.1.6 checkbox标签99
示例:checkbox标签的使用99
4.1.7 checkboxes标签101
示例:checkboxes标签的使用101
4.1.8 radiobutton标签105
示例:radiobutton标签的使用105
4.1.9 radiobuttons标签106
示例:radiobuttons标签的使用107
4.1.10 select标签108
4.1.11 option标签109
4.1.12 options标签109
示例:select、option和options标签的使用109
4.1.13errors标签113
示例:errors标签的使用114
4.2 本章小结116
第5章 SpringMVC的国际化117
5.1 SpringMVC国际化的相关知识118
5.1.1 messageSource接口118
5.1.2 localeResolver接口118
5.1.3 message标签119
5.2 SpringMVC的国际化处理119
5.2.1 AcceptHeaderLocaleResolver119
示例:基于浏览器请求的国际化实现119
5.2.2 SessionLocaleResolver122
示例:基于HttpSession的国际化实现123
5.2.3 CookieLocaleResolver125
示例:基于Cookie的国际化实现125
5.3 本章小结127
第6章 SpringMVC的数据转换、格式化和数据校验128
6.1 数据绑定流程129
6.2 数据转换129
6.2.1 ConversionService129
6.2.2 Spring支持的转换器130
示例:使用ConversionService转换数据131
示例:使用@InitBinder添加自定义编辑器转换数据134
示例:使用WebBindingInitializer注册全局自定义编辑器转换数据135
6.2.3多种转换器的优先顺序135
6.3 数据格式化136
示例:使用Formatter格式化数据137
示例:使用FormatterRegistrar注册Formatter138
示例:使用AnnotationFormatterFactory<AextendsAnnotation>格式化数据139
6.4 数据校验142
6.4.1 Spring的Validation校验框架143
示例:测试Spring的Validation校验143
6.4.2 JSR303校验146
示例:测试JSR303校验147
6.5 本章小结152
第7章 SpringMVC的文件上传下载和拦截器机制153
7.1 文件上传154
示例:SpringMVC的文件上传154
示例:使用对象接收上传文件157
7.2 文件下载158
示例:SpringMVC的文件下载158
7.3 拦截器160
7.3.1 HandlerInterceptor接口160
示例:拦截器实现用户权限验证161
7.4 本章小结164
第8章 MyBatis简介165
8.1 ORM和MyBatis166
8.1.1 对象/关系数据库映射(ORM)166
8.1.2 基本映射方式167
8.1.3 流行的ORM框架简介168
8.1.4 MyBatis概述168
8.2 MyBatis入门169
8.2.1 MyBatis下载和安装169
示例:MyBatis的数据库操作入门170
8.3 本章小结175
第9章 MyBatis的基本用法176
9.1 MyBatis体系结构177
9.1.1 SqlSessionFactory177
9.1.2 SqlSession177
9.2 深入MyBatis的配置文件179
9.2.1 MyBatis的配置文件结构180
9.2.2 properties属性180
9.2.3 settings设置181
9.2.4 typeAliases类型命名183
9.2.5 typeHandlers类型处理器184
9.2.6 objectFactory对象工厂185
9.2.7 environments配置环境185
9.2.8 mapper映射器187
9.3 MyBatis日志信息配置188
9.3.1 log4j.properties配置日志188
9.3.2 log4j.xml配置日志189
9.4 深入MapperXML映射文件190
9.4.1 select191
9.4.2 insert、update和delete192
9.4.3 sql194
9.4.4 参数(Parameters)195
示例:测试select、insert、update和delete操作195
9.4.5 ResultMaps200
示例:测试ResultMaps201
9.5 本章小结208
第10章 深入使用MyBatis209
10.1 MyBatis关联映射210
10.1.1 一对一210
示例:OneToOneTest210
10.1.2 一对多213
示例:OneToManyTest213
10.1.3 多对多218
示例:ManyToManyTest218
10.2 MyBatis动态SQL225
示例:DynamicSQLTest225
10.2.1 if226
10.2.2 choose(when、otherwise)229
10.2.3 where230
10.2.4 set232
10.2.5 foreach233
10.2.6 bind234
10.3 MyBatis调用存储过程234
示例:MyBatis调用存储过程235
10.3.1 插入数据235
10.3.2 查询数据返回集合237
10.3.3 根据id查询数据返回对象238
10.3.4 修改数据239
10.3.5 删除数据241
10.4 MyBatis事务管理242
10.4.1 事务的概念242
10.4.2 Transaction接口243
10.4.3 事务的配置创建和使用243
10.5 MyBatis缓存机制247
10.5.1 一级缓存(SqlSession级别)247
示例:OneLevelCacheTest247
10.5.2 二级缓存(mapper级别)251
示例:TwoLevelCacheTest251
10.6 本章小结254
第11章 MyBatis的注解配置255
11.1 常用注解256
11.2 注解的使用256
示例:测试select、insert、update和delete操作257
示例:测试一对一关联262
示例:测试一对多关联263
示例:测试多对多关联265
示例:测试动态SQL267
示例:测试调用存储过程274
示例:测试二级缓存276
11.3 本章小结278
第12章 Spring5整合MyBatis3279
12.1 开发环境搭建280
12.2 准备所需的jar包280
12.3 准备数据库资源280
12.4 完成配置文件281
12.5 持久层功能实现283
12.6 服务层功能实现284
12.7 控制层功能实现286
12.8 JSP页面288
12.9 测试Spring5整合MyBatis3289
12.10 本章小结290
第13章 实战项目:人事管理系统291
13.1 项目简介及系统结构292
13.1.1 系统功能介绍292
13.1.2 相关技术介绍293
13.1.3 系统结构293
13.1.4 系统的功能模块294
13.2 数据表和持久化类294
13.2.1 设计数据库表294
13.2.2 设计持久化实体296
13.2.3 创建持久化实体类297
13.3 实现DAO持久层303
13.3.1 公共常量类304
13.3.2 定义DAO接口304
13.3.3 部署DAO层318
13.4 实现Service持久层319
13.4.1 业务逻辑组件的设计319
13.4.2 实现业务逻辑组件320
13.4.3 事务管理335
13.4.4 部署业务逻辑组件335
13.5 实现Web层335
13.5.1 控制器的处理顺序335
13.5.2 用户管理339
13.5.3 部门管理342
13.5.4 职位管理345
13.5.5 员工管理348
13.5.6 公告管理351
13.5.7 下载中心355
13.6 本章小结359
附录A EL表达式和JSTL标签库360
时至今日,以Spring为核心的轻量级JavaEE企业开发平台在企业开发中占有绝对的优势,JavaEE应用以其稳定的性能、良好的开放性以及严格的安全性,深受企业应用开发者的青睐,应用的性能、稳定性都有很好的保证。
轻量级JavaEE开发大致可分为两种方式:以Struts+Spring+Hibernate三大框架为核心的轻量级JavaEE和以SpringMVC+MyBatis为核心的轻量级JavaEE。这两种组合都在保留经典JavaEE应用架构、高度可扩展性、高度可维护性的基础上,降低了JavaEE应用的开发、部署成本,对于大部分中小型企业应用来说是首选。
《Spring+MyBatis企业应用实战(第2版)》重点介绍以SpringMVC+MyBatis为核心的轻量级JavaEE。《Spring+MyBatis企业应用实战(第2版)》采用Tomcat8作为Web服务器,EclipseIDE作为开发工具,详细介绍了SpringMVC和MyBatis框架。SpringMVC的配置全部使用注解方式,不再采用旧版本中传统的XML配置方式;MyBatis则基于企业开发实际情况,首先介绍了传统的XML持久化映射,之后又介绍了升级的注解持久化映射。
随着Spring的不断发展,SpringMVC已有取代Struts的能力,而MyBatis相对Hibernate而言则更为轻便、简单,越来越多的公司选择使用SpringMVC+MyBatis的轻量级框架组合来开发JavaEE项目,因此掌握SpringMVC+MyBatis技术将为Java开发者带来更多的就业机会与竞争力。
《Spring+MyBatis企业应用实战(第2版)》有什么特点
《Spring+MyBatis企业应用实战(第2版)》是一本介绍SpringMVC+MyBatis技术以及两者整合的实用图书,全面介绍了最新的SpringMVC和MyBatis各方面的知识。
《Spring+MyBatis企业应用实战(第2版)》针对每一个知识点都通过相应的程序给出了示范,第13章的实战项目“HRM人事管理系统”采用目前最流行、最规范的JavaEE架构,整个应用分为DAO持久层、领域对象层、业务逻辑层、控制器层和视图层,各层之间分层清晰,层与层之间以松耦合的方式组织在一起。笔者既担任过软件开发的技术经理,也担任过软件公司的培训导师,现如今从事专业、高端的职业技术培训。《Spring+MyBatis企业应用实战(第2版)》所有应用范例都密切契合企业开发实际场景,例如用户权限验证、文件上传下载等都是企业开发中要实现的实际功能,同时采用目前企业中颇为流行、规范的开发架构,严格遵守JavaEE开发规范。读者参考《Spring+MyBatis企业应用实战(第2版)》的架构,完全可以身临其境地感受企业实际项目开发。
《Spring+MyBatis企业应用实战(第2版)》并不是一本关于所谓“思想”的书,也没有一堆“深奥”的新名词和“高深”的理论,只是让读者学会实际的SpringMVC和MyBatis技术。《Spring+MyBatis企业应用实战(第2版)》的特点是操作步骤详细,编程思路清晰,语言平实易懂。只要读者认真阅读《Spring+MyBatis企业应用实战(第2版)》,并掌握书中知识,那么就完全可以胜任企业中的SpringMVC+MyBatis项目开发。
阅读《Spring+MyBatis企业应用实战(第2版)》需要具备一定的计算机知识以及编程功底。熟练掌握Java语言和Spring框架的IOC、AOP和持久层的ORM设计模式等知识对于学习《Spring+MyBatis企业应用实战(第2版)》是很有必要的。
可访问www.crazyit.org或www.broadview.com.cn/33780下载《Spring+MyBatis企业应用实战(第2版)》配套资源。
《Spring+MyBatis企业应用实战(第2版)》写给谁看
如果你已经掌握了JavaSE的内容,或已经学完了疯狂软件教育的《疯狂Java讲义》一书,那么你非常适合阅读此书。除此之外,如果你已有初步的JSP、Servlet、JDBC基础,甚至对Spring、MyBatis等框架有所了解,但希望掌握它们在实际开发中的应用,《Spring+MyBatis企业应用实战(第2版)》也非常适合你。如果你对Java的掌握还不熟练,则建议遵从学习规律,循序渐进,暂时不要购买、阅读此书,而是按照“疯狂Java学习路线图”中的建议顺序学习。
衷心感谢
衷心感谢李刚老师,他是笔者非常好的朋友,在《Spring+MyBatis企业应用实战(第2版)》的创作过程中,他提供了大量切实、有用的帮助。同时衷心感谢疯狂软件教育中心所有同事提供的帮助。
感谢我的妻子王丹娜女士,她给了我生活上、精神上无微不至的关怀和照顾,并承担几乎所有的日常家务,使我能够心无旁骛地专注于程序的研究和书籍的撰写。
感谢所有参加疯狂软件实训的学生,他们在实际工作场景的应用中证明了《Spring+MyBatis企业应用实战(第2版)》的价值,他们的反馈让《Spring+MyBatis企业应用实战(第2版)》更加实用。
肖文吉









