MyBatis从入门到精通
  • 推荐0
  • 收藏4
  • 浏览1.0K

MyBatis从入门到精通

刘增辉 (作者) 

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

相关图书

Java 9 口袋指南

Robert Liguori;Patricia Liguori (作者) 张卫滨 (译者)

本书以通俗易懂的语言介绍了Java语言的语法、类型、并发编程等基础知识,同时还以样例的形式讲解了Lambda表达式、Java模块系统、JShell这些Java ...

¥49.00

Effective C#(第3版):编写高质量C#代码的50条有效方法(英文版)

Bill Wagner (作者) Bill Wagner(比尔·瓦格纳) (译者)

本书的作者,也是.NET专家Bill Wanger给出我们50条利用C#优点以及特性来写出健壮的,高效的,易于维护的代码的高效法则。同时,本书也反映出了C#语言...

 

Effective Java英文版 (第3版)

Joshua Bloch (作者) Joshua Bloch(约书亚·布洛克) (译者)

和以前的版本一样,有效Java的每一章,第三版,由几个“项目”组成,每一章都以一篇简短的、独立的文章形式呈现,提供了具体的建议,深入了解Java平台的微妙之处,...

 

零基础学编程:树莓派和Python

金学林 (作者)

未来是计算机和机器人的世界。软、硬件编程将成为未来世界重要的一项技能。<br>通往山巅的技术之路有无数条,每条路的方式和难度都不一样。本书给零基础的读者指明了一...

¥49.00

跟老齐学Python:数据分析

齐伟 (作者)

《跟老齐学Python》系列后续。<br>读者在本书中可以学习到Numpy、Pandas、matplotlib、SciPy、SymPy等与数据分析相关的库,掌握...

¥79.00

自动化平台测试开发:Python测试开发实战

邹辉 (作者)

本书详细介绍了基于Python语言的自动化平台开发以及自动化测试技术知识。本书理论与实践<br>相结合,以自动化平台开发为主线、自动化测试为辅线贯穿所有内容。具...

¥69.00
本书中从一个简单的MyBatis查询入手,搭建起学习MyBatis的基础开发环境。通过全面的示例代码和测试讲解了在MyBatis XML方式和注解方式中进行增、删、改、查操作的基本用法,介绍了动态SQL在不同方面的应用以及在使用过程中的最佳实践方案。针对MyBatis高级映射、存储过程和类型处理器提供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握MyBatis的高级用法,同时针对MyBatis的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、插件开发、Spring、Spring Boot集成的详细内容。最后通过介绍Git和GitHub让读者了解MyBatis开源项目,通过对MyBatis源码和测试用例的讲解让读者更好掌握MyBatis。
MyBatis官方推荐分页插件PageHelper作者亲自执笔,配合大量完整示例,深入解读MyBatis源代码,带你从入门到精通!
刘增辉,资深Java工程师,热爱技术研究,乐于分享心得,活跃于CSDN和开源中国网站。对MyBatis源码有着深入研究,同时热衷于开源项目,在GitHub和开源中国网站上发布了多个开源项目,是MyBatis官方推荐的分页插件PageHelper和通用Mapper的作者,所发布项目受到了数千人的关注。博客:http://blog.csdn.net/isea533。
前言
自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

读者评论

  • 刘增辉,79元买了你的书,你的源代码呢?书上的二维码都没用,留的Q群都拒绝加入。我有结束你生命的冲动!把没有买书的人踢出去,开放群,说出你的源代码在哪里!真的杀了你,至少可以让一个时代的作者写书的时候都抱着虔诚的态度。

    abcd发表于 2018/7/13 17:59:38
  • 页码:249-250 • 行数:page249最后一行 • 印次: 4

    springboot基本项目搭建,pom.xml引入了spring-boot-starter相关jar包,应该会默认需要加载数据库相关的配置,而一开始没有整合mybatis,会启动失败,报错找不到datasource

    应该在Application.j**a类名上该注解为
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

    Bigbig大湘哥发表于 2018/6/15 12:39:52
  • 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