MyBatis从入门到精通
  • 推荐0
  • 收藏0
  • 浏览545

MyBatis从入门到精通

刘增辉 (作者) 

  • 书  号:978-7-121-31797-2
  • 出版日期:2017-06-20
  • 页  数:312
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:孙奇俏
纸质版 ¥79.00

相关图书

PHP 7 编程实战

Doug Bierer (作者) 苏宝龙 (译者)

Web网站的专门化和多元化发展趋势,要求网页编程语言必须满足编写出运行速度快、节省资源且具有较高安全性动态网页的需求。本书介绍的PHP 7网页编程语言就是其中的...

¥119.00

Kotlin开发快速入门与实战

王志强 (作者)

本书主要介绍在Kotlin开发中各种相关的技术及知识,全书共分为7章,内容层次清晰,难度循序渐进。第1章介绍Kotlin编程环境的搭建、如何运行Kotlin项目...

 

Boost程序库完全开发指南——深入C++"准”标准库(第4版)

罗剑锋 (作者)

Boost 是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’<br>标准库”的美誉。<br>Boost 由C++标准委员会部...

¥99.00

Java EE互联网轻量级框架整合开发— —SSM框架(Spring MVC+Spring+MyBatis)和Redis实现

杨开振 周吉文 梁华辉 谭茂华 (作者)

随着移动互联网的兴起,以Java技术为后台的互联网技术占据了市场的主导地位,而在Java互联网后台开发中,SSM框架(Spring+Spring MVC+MyB...

¥119.00

揭秘Java虚拟机:JVM设计原理与实现

封亚飞 (作者)

《揭秘Java虚拟机:JVM设计原理与实现》从源码角度解读HotSpot的内部实现机制,本书主要包含三大部分——JVM数据结构设计与实现、执行引擎机制及内存分配...

¥129.00

大型IT系统智能一体化测试

陈绍英 (作者)

本书是一本来自软件自动化测试领域资深专家的作品,主要用于推广智能一体化测试理论及应用。作者在书中深入浅出地讲解了自己在银行领域悟出的智能一体化测试这一全新的理论...

¥69.00
本书中从一个简单的MyBatis查询入手,搭建起学习MyBatis的基础开发环境。通过全面的示例代码和测试讲解了在MyBatis XML方式和注解方式中进行增、删、改、查操作的基本用法,介绍了动态SQL在不同方面的应用以及在使用过程中的最佳实践方案。针对MyBatis高级映射、存储过程和类型处理器提供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握MyBatis的高级用法,同时针对MyBatis的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、插件开发、Spring、Spring Boot集成的详细内容。最后通过介绍Git和GitHub让读者了解MyBatis开源项目,通过对MyBatis源码和测试用例的讲解让读者更好掌握MyBatis。
MyBatis官方推荐分页插件PageHelper作者亲自执笔,配合大量完整示例,深入解读MyBatis源代码,带你从入门到精通!
前言
自2013年起,我开始带领团队开发项目,公司此前使用的是一套深度集成的Spring、Struts和Hibernate框架,这套重量级框架显然已经不适合用在全新的项目中。当时使用的Hibernate还是较早的版本,在项目的业务层需要拼接大量的SQL和HQL才能进行数据库操作。综合多方面因素,我决定选择其他持久化框架进行项目开发。因为MyBatis SQL和代码分离的方式以及动态SQL的强大功能,加之其在对查询结果进行映射处理等方面具有显著优点,因此,我与MyBatis开始结缘。
为了提高查询效率,通常会采用物理分页,然而MyBatis只能支持内存分页。若想让MyBatis支持物理分页,只能通过基于拦截器的插件来实现。当时,已有的MyBatis分页插件都不适用于公司已经开发了大半的项目,因此我有了自己写一个分页插件的想法。完成后的分页插件(PageHelper)能很方便地实现对MyBatis查询方法的分页。后来,我在CSDN和开源中国的博客中分享了代码,并且详细说明了实现原理。在后续更新插件的一篇博客评论中,红薯(开源中国创始人)说:“应该把代码放到git.oschina.net中,放网盘很不专业哦!”因为这句话,我便踏入了开源的世界。
由于PageHelper分页插件有越来越多人使用,因而有很多网友通过留言、私信、邮件等方式和我讨论MyBatis的相关问题。为了解决网友的问题以及完善分页插件的功能,我深入学习了MyBatis的源码,通过不断的学习,不仅从深层次了解了各种问题的产生原因,对MyBatis的理解也逐渐加深。2014年11月,我利用闲暇时间又开发了一个新的开源项目:MyBatis通用Mapper,它实现了MyBatis单表增、删、改、查的基本方法,能够帮助开发人员节省大量时间。
这几年来,我一直在博客上面和大家分享MyBatis的相关内容,在这期间和网友交流解决的问题有很多是重复的,也有很多都是基础的。现在已有的MyBatis学习途径提供给大家的知识,有一些比较深奥不适合初学者,有一些比较基础却不全面。为了让读者比较容易地全面掌握MyBatis的相关知识,这本书得以诞生,本书将通过全面完整的大量示例,让读者轻松且全面地掌握MyBatis。

目录

第1章 MyBatis入门 1
1.1 MyBatis简介 2
1.2 创建Maven项目 3
1.3 简单配置让MyBatis跑起来 7
1.3.1 准备数据库 8
1.3.2 配置MyBatis 8
1.3.3 创建实体类和Mapper.xml文件 10
1.3.4 配置Log4j以便查看MyBatis操作数据库的过程 11
1.3.5 编写测试代码让MyBatis跑起来 12
1.4 本章小结 14
第2章 MyBatis XML方式的基本用法 15
2.1 一个简单的权限控制需求 16
2.1.1 创建数据库表 16
2.1.2 创建实体类 19
2.2 使用XML方式 21
2.3 select用法 23
2.4 insert用法 35
2.4.1 简单的insert方法 35
2.4.2 使用JDBC方式返回主键自增的值 38
2.4.3 使用selectKey返回主键的值 40
2.5 update用法 42
2.6 delete用法 45
2.7 多个接口参数的用法 47
2.8 Mapper接口动态代理实现原理 50
2.9 本章小结 51
第3章 MyBatis注解方式的基本用法 53
3.1 @Select注解 54
3.1.1 使用mapUnderscoreToCamelCase配置 55
3.1.2 使用resultMap方式 55
3.2 @Insert注解 58
3.2.1 不需要返回主键 58
3.2.2 返回自增主键 58
3.2.3 返回非自增主键 59
3.3 @Update注解和@Delete注解 59
3.4 Provider注解 60
3.5 本章小结 61
第4章 MyBatis动态SQL 63
4.1 if用法 64
4.1.1 在WHERE条件中使用if 64
4.1.2 在UPDATE更新列中使用if 68
4.1.3 在INSERT动态插入列中使用if 70
4.2 choose用法 72
4.3 where、set、trim用法 75
4.3.1 where用法 75
4.3.2 set用法 76
4.3.3 trim用法 77
4.4 foreach用法 78
4.4.1 foreach实现in集合 78
4.4.2 foreach实现批量插入 81
4.4.3 foreach实现动态UPDATE 84
4.5 bind用法 86
4.6 多数据库支持 86
4.7 OGNL用法 89
4.8 本章小结 90
第5章 Mybatis代码生成器 91
5.1 XML配置详解 92
5.1.1 property标签 95
5.1.2 plugin标签 96
5.1.3 commentGenerator标签 97
5.1.4 jdbcConnection标签 99
5.1.5 javaTypeResolver标签 100
5.1.6 javaModelGenerator标签 101
5.1.7 sqlMapGenerator标签 102
5.1.8 javaClientGenerator标签 103
5.1.9 table标签 104
5.2 一个配置参考示例 109
5.3 运行MyBatis Generator 111
5.3.1 使用Java编写代码运行 111
5.3.2 从命令提示符运行 113
5.3.3 使用Maven Plugin运行 115
5.3.4 使用Eclipse插件运行 117
5.4 Example介绍 119
5.5 本章小结 124
第6章 MyBatis高级查询 125
6.1 高级结果映射 126
6.1.1 一对一映射 126
6.1.2 一对多映射 140
6.1.3 鉴别器映射 156
6.2 存储过程 159
6.2.1 第一个存储过程 162
6.2.2 第二个存储过程 164
6.2.3 第三个和第四个存储过程 166
6.2.4 在Oracle中使用游标参数的存储过程 168
6.3 使用枚举或其他对象 170
6.3.1 使用MyBatis提供的枚举处理器 170
6.3.2 使用自定义的类型处理器 172
6.3.3 对Java 8日期(JSR-310)的支持 175
6.4 本章小结 176
第7章 MyBatis缓存配置 177
7.1 一级缓存 178
7.2 二级缓存 181
7.2.1 配置二级缓存 181
7.2.2 使用二级缓存 184
7.3 集成EhCache缓存 187
7.4 集成Redis缓存 190
7.5 脏数据的产生和避免 191
7.6 二级缓存适用场景 194
7.7 本章小结 194
第8章 MyBatis插件开发 195
8.1 拦截器接口介绍 196
8.2 拦截器签名介绍 198
8.2.1 Executor接口 198
8.2.2 ParameterHandler接口 200
8.2.3 ResultSetHandler接口 201
8.2.4 StatementHandler接口 202
8.3 下画线键值转小写驼峰形式插件 203
8.4 分页插件 206
8.4.1 PageInterceptor拦截器类 207
8.4.2 Dialect接口 212
8.4.3 MySqlDialect实现 216
8.5 本章小结 220

第9章 Spring集成MyBatis 221
9.1 创建基本的Maven Web项目 222
9.2 集成Spring和Spring MVC 227
9.3 集成MyBatis 232
9.4 几个简单实例 234
9.4.1 基本准备 235
9.4.2 开发Mapper层(Dao层) 235
9.4.3 开发业务层(Service层) 238
9.4.4 开发控制层(Controller层) 240
9.4.5 开发视图层(View层) 242
9.4.6 部署和运行应用 245
9.5 本章小结 246
第10章 Spring Boot集成MyBatis 247
10.1 基本的Spring Boot项目 248
10.2 集成MyBatis 251
10.3 MyBatis Starter配置介绍 253
10.4 简单示例 255
10.4.1 引入simple依赖 255
10.4.2 开发业务(Service)层 258
10.4.3 开发控制(Controller)层 259
10.4.4 运行应用查看效果 259
10.5 本章小结 260
第11章 MyBatis开源项目 261
11.1 Git入门 262
11.1.1 初次运行配置 262
11.1.2 初始化和克隆仓库 263
11.1.3 本地操作 265
11.1.4 远程操作 267
11.2 GitHub入门 269
11.2.1 创建并提交到仓库 269
11.2.2 Fork仓库并克隆到本地 272
11.2.3 社交功能 275
11.3 MyBatis源码讲解 278
11.4 MyBatis测试用例 290
11.5 本章小结 293
附录 类型处理器(TypeHandler) 295

本书勘误

印次
  • 页码:64  •  行数:8  •  印次: 1

    choose(when、oterwise)中otherwise写成了oterwise.

    B13040432 提交于 2017/7/30 15:28:15
    孙奇俏 确认于 2017/8/3 8:43:37
  • 页码:88  •  行数:4,8  •  印次: 2

    两个地方select语句的表名都多打了一个and,select * from sys_user变成了from sys_userand.

    B13040432 提交于 2017/8/6 15:55:40
    孙奇俏 确认于 2017/8/7 14:09:50
  • 页码:150  •  行数:40  •  印次: 1

    association标签中缺少属性javaType=”tk.mybatis.simple.model.CreateInfo”

    gtygtygty 提交于 2017/7/11 10:45:14
    孙奇俏 确认于 2017/7/15 11:09:03
  • 页码:170  •  行数:倒数第5行  •  印次: 1

    可选值的问就解决了,少了个题字。

    B13040432 提交于 2017/8/26 11:43:53
    孙奇俏 确认于 2017/8/28 8:48:38
  • 页码:182  •  行数:3  •  印次: 2

    这一行的两个UserMapper.xml改成RoleMapper.xml.

    B13040432 提交于 2017/8/26 11:52:17
    孙奇俏 确认于 2017/8/28 9:17:22

读者评论

  • mybatis中mapper配置中namespace配置的应该是接口路径吧,这怎么配成了mapper文件的路径?看的我都怀疑人生了,本来就菜鸟,还被误导的😂

    遗失的呆猫发表于 2017/8/9 0:31:46
    • 已经将问题反映给作者,作者是官方网站推荐的通用mapper的原作者,稍后会让他为您解释。

      孙奇俏发表于 2017/8/9 16:00:01
    • 不用怀疑人生,再看仔细点就明白了。
      在没有接口的情况下,namespace要配置成什么?书里什么地方说配置成mapper文件的路径了?
      只有在 mybatis-config.xml 中一开始配置 mapper 元素的时候,配置的是 mapper 文件的路径,这里和namespace没有任何关系。
      在23页改成package方式时,因为mybaits自动加载xml的机制,需要将XML放到和接口包名相同的资源目录中。
      关于接口和XML混合方式中,为什么namespace要设置成接口名,可以看看第50页中的简单原理。

      最后,能不能指出你这个问题在书上第几页?

      abel533发表于 2017/8/9 16:17:29