玩转 Spring 全家桶
丁雪丰
美团研究员,《Spring Boot 实战》、《Spring 攻略》译者,腾讯云 TVP。
97978 人已学习
新⼈⾸单¥68
课程目录
已完结/共 123 讲
第十一章:Spring Cloud及Cloud Native概述 (5讲)
玩转 Spring 全家桶
登录|注册
留言
56
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 20 | 通过MyBatis操作数据库
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Spring课程介绍
02 | 一起认识Spring家族的主要成员
03 | 跟着Spring了解技术趋势
04 | 编写你的第一个Spring程序
05 | 如何配置单数据源
06 | 如何配置多数据源
07 | 那些好用的连接池们:HikariCP
08 | 那些好用的连接池们:Alibaba Druid
09 | 如何通过Spring JDBC访问数据库
10 | 什么是Spring的事务抽象(上)
11 | 什么是Spring的事务抽象(下)
12 | 了解Spring的JDBC异常抽象
13 | 课程答疑(上)
14 | 课程答疑(下)
15 | 认识Spring Data JPA
16 | 定义JPA的实体对象
17 | 开始我们的线上咖啡馆实战项目:SpringBucks
18 | 通过Spring Data JPA操作数据库
19 | Spring Data JPA的Repository是怎么从接口变成Bean的
20 | 通过MyBatis操作数据库
21 | 让MyBatis更好用的那些工具:MyBatis Generator
22 | 让MyBatis更好用的那些工具:MyBatis PageHelper
23 | SpringBucks实战项目进度小结
24 | 通过Docker辅助开发
25 | 在Spring中访问MongoDB
26 | 在Spring中访问Redis
27 | Redis的哨兵与集群模式
28 | 了解Spring的缓存抽象
29 | Redis在Spring中的其他用法
30 | SpringBucks实战项目进度小结
31 | Project Reactor介绍(上)
32 | Project Reactor介绍(下)
33 | 通过Reactive的方式访问Redis
34 | 通过Reactive的方式访问MongoDB
35 | 通过Reactive的方式访问RDBMS
36 | 通过AOP打印数据访问层的摘要(上)
37 | 通过AOP打印数据访问层的摘要(下)
38 | SpringBucks实战项目进度小结
39 | 编写第一个Spring MVC Controller
40 | 理解Spring的应用上下文
41 | 理解请求的处理机制
42 | 如何定义处理方法(上)
43 | 如何定义处理方法(下)
44 | Spring MVC中的视图解析机制(上)
45 | Spring MVC中的视图解析机制(下)
46 | Spring MVC中的常用视图(上)
47 | Spring MVC中的常用视图(下)
48 | 静态资源与缓存
49 | Spring MVC中的异常处理机制
50 | 了解Spring MVC的切入点
51 | SpringBucks实战项目进度小结
52 | 课程答疑
53 | 通过RestTemplate访问Web资源
54 | RestTemplate的高阶用法
55 | 简单定制RestTemplate
56 | 通过WebClient访问Web资源
57 | SpringBucks实战项目进度小结
58 | 设计好的RESTful Web Service(上)
59 | 设计好的RESTful Web Service(下)
60 | 什么是HATEOAS
61 | 使用Spring Data REST实现简单的超媒体服务(上)
62 | 使用Spring Data REST实现简单的超媒体服务(下)
63 | 分布式环境中如何解决Session的问题
64 | 使用WebFlux代替Spring MVC(上)
65 | 使用WebFlux代替Spring MVC(下)
66 | SpringBucks实战项目进度小结
67 | 认识Spring Boot的组成部分
68 | 了解自动配置的实现原理
69 | 动手实现自己的自动配置
70 | 如何在低版本Spring中快速实现类似自动配置的功能
71 | 了解起步依赖及其实现原理
72 | 定制自己的起步依赖
73 | 深挖Spring Boot的配置加载机制
74 | 理解配置背后的PropertySource抽象
75 | 认识Spring Boot的各类Actuator Endpoint
76 | 动手定制自己的Health Indicator
77 | 通过Micrometer获取运行数据
78 | 通过Spring Boot Admin了解程序的运行状态
79 | 如何定制Web容器的运行参数
80 | 如何配置容器支持HTTP/2(上)
81 | 如何配置容器支持HTTP/2(下)
82 | 如何编写命令行运行的程序
83 | 了解可执行Jar背后的秘密
84 | 如何将Spring Boot应用打包成Docker镜像文件
85 | SpringBucks实战项目进度小结
86 | 简单理解微服务
87 | 如何理解云原生(Cloud Native)
88 | 12-Factor App(上)
89 | 12-Factor App(下)
90 | 认识Spring Cloud的组成部分
91 | 使用Eureka作为服务注册中心
92 | 使用Spring Cloud Loadbalancer访问服务
93 | 使用Feign访问服务
94 | 深入理解服务发现背后的DiscoveryClient
95 | 使用Zookeeper作为服务注册中心
96 | 使用Consul作为服务注册中心
97 | 使用Nacos作为服务注册中心
98 | 如何定制自己的DiscoveryClient
99 | SpringBucks实战项目进度小结
100 | 使用Hystrix实现服务熔断(上)
101 | 使用Hystrix实现服务熔断(下)
102 | 如何观察服务熔断
103 | 使用Resilience4j实现服务熔断
104 | 使用Resilience4j实现服务限流(上)
105 | 使用Resilience4j实现服务限流(下)
106 | SpringBucks实战项目进度小结
107 | 基于Git的配置中心(上)
108 | 基于Git的配置中心(下)
109 | 基于Zookeeper的配置中心
110 | 深入理解Spring Cloud的配置抽象
111 | 基于Consul的配置中心
112 | 基于Nacos的配置中心
113 | SpringBucks实战项目进度小结
114 | 认识Spring Cloud Stream
115 | 通过Spring Cloud Stream访问RabbitMQ
116 | 通过Spring Cloud Stream访问Kafka
117 | SpringBucks实战项目进度小结
118 | 通过Dapper理解链路治理
119 | 使用Spring Cloud Sleuth实现链路追踪
120 | 如何追踪消息链路
121 | 除了链路还要治理什么
122 | SpringBucks实战项目进度小结
123 | 结课测试&结束语
本节摘要

PDF 课件和源代码下载地址:

https://gitee.com/geektime-geekbang/geektime-spring-family

猜你喜欢

unpreviewunpreview

登录 后留言

全部留言(56)

  • 最新
  • 精选
盛权_vinc
老师,useGeneratedKeys = true 应该就是指定生成的主键回填到入参的coffee的id中吧,我验证了一下,我用的是mysql8,在没指定keyProperty="id",keyColumn="id"时,貌似也不会回填,不知道是不是数据库的问题呢,还是因为我用了druid的数据源? 然后那个save方法的返回值,应该不是id吧,而是操作的记录数,所以我看到有同学评论一直放回1,我也验证过,应该是数量吧,update和delete时返回参数Long对应也是记录操作数? 是这样吗?

作者回复: 你好,感谢你的提醒。我也去翻了下MyBatis的文档,这里的确是我把Insert的返回搞错了。 根据官方文档和我自己的验证,@Insert返回的是变动记录的条数,int也是可以的。我知道Update和Delete返回的是条数,但平时不太关心Insert的结果,结果这里就弄错了。 我已经重新写了示例代码,也重新录制了本节相关内容,极客时间的同学在制作完之后会更新上去。 再次感谢你能指出我的问题:-)

2019-03-29
2
27
Eros
对于金额,使用JDK自带的BigDecimal不是更好吗?也不需要多引入一个JAR包,而且对精度的处理也非常好。

作者回复: BigDecimal只是处理精度而已,对于货币而言,还有货币种类、货币单位、货币转换等很多东西需要考虑的。比如元转分,分转元这些Money都提供了支持。

2019-11-05
2
10
ABC
回复Francis_Lee: 可以在mapping映射文件中如下定义,userColumns和userJoins就是可以重用的了: <sql id="userColumns"> a.id, a.company_id AS "company.id", a.office_id AS "office.id", a.login_name, a.password, a.name, c.name AS "company.name", c.parent_id AS "company.parent.id", c.parent_ids AS "company.parentIds", ca.id AS "company.area.id", ca.name AS "company.area.name", ca.parent_id AS "company.area.parent.id", ca.parent_ids AS "company.area.parentIds", o.name AS "office.name", o.parent_id AS "office.parent.id", o.parent_ids AS "office.parentIds", oa.id AS "office.area.id", oa.name AS "office.area.name", oa.parent_id AS "office.area.parent.id", oa.parent_ids AS "office.area.parentIds", cu.id AS "company.primaryPerson.id", cu.name AS "company.primaryPerson.name", cu2.id AS "company.deputyPerson.id", cu2.name AS "company.deputyPerson.name", ou.id AS "office.primaryPerson.id", ou.name AS "office.primaryPerson.name", ou2.id AS "office.deputyPerson.id", ou2.name AS "office.deputyPerson.name" </sql> <sql id="userJoins"> LEFT JOIN sys_office c ON c.id = a.company_id LEFT JOIN sys_area ca ON ca.id = c.area_id LEFT JOIN sys_office o ON o.id = a.office_id </sql> <select id="get" resultType="User"> SELECT <include refid="userColumns"/> FROM sys_user a <include refid="userJoins"/> WHERE a.id = #{id} </select> 官方解释: sql 这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中。它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化.

作者回复: 就希望看到同学们互相帮助,互相成长,我也会跟着大家一起学习。

2019-02-23
10
晴天
mybatis麻烦的地方在于inser,update里要把所有字段都写一遍,有没有好的方式,能够在mybatis里面像jpa那样操作实体?

作者回复: 后面会讲到MyBatis Generator,都帮你生成了。

2019-02-23
7
phenmod
spring-boot-starter-parent 2.1.4.RELEASE mybatis-spring-boot-starter 2.0.1 Find Coffee by id = null 找不到coffee 不知道是不是2.0的mybatis导致的

作者回复: 我试了下把mybatis-spring-boot-starter换成2.0.1,的确也出现了你这个问题,在把save方法的注解换成这样后解决了 @Options(useGeneratedKeys = true, keyColumn="id", keyProperty="id") 。 在1.3.2时没有这个问题,save时可以回填id,升级后需要Options里加上配置才行了。

2019-05-10
2
4
KaitoShy
丁老师你好,问一下,建议 JPA 和 Mybatis 混用么?我看有些项目是混着用的。

作者回复: 不太建议,一般选一种,这样项目也能清晰一些。所以一开始就要评估好技术选型。两者的功能其实差不多,混用的价值也不是很大。或者你能补充些场景,我们再一起看看是否合适。

2020-02-19
3
Nous
MyBatis的XML好还是注解的好?我知道复杂的SQL还是要XML

作者回复: 这个其实是一样的,看你们习惯,不过有时候SQL都集中到XML里,和代码分开后,方便做些其他的工作,比如用工具扫描SQL Mapper的XML文件什么的。

2019-03-11
3
ABC
MyBatis-Spring-Boot-Starter 会自动扫描带有@Mapper注解的映射器,所以可以不用在MybatisDemoApplication类上添加@MapperScan注解,也可以实现相同效果。除非Mapper接口上未添加@Mapper注解,就需要添加@MapperScan在MybatisDemoApplication类上进行扫描了。

作者回复: 你说的这个逻辑在MybatisAutoConfiguration中,另外,@MapperScan还可以指定要扫描的package。

2019-02-23
3
Marvelous.
老师,mybatis的缓存机制用得多吗?我没看到课程有提起到,是用的比较少吗?

作者回复: 从我遇到的情况来看,似乎是比较少,一般我们会用JVM内部缓存或者Redis缓存更多一点。MyBatis更多的还是ORM操作数据库,数据取出来之后,怎么做缓存是我们来处理的,而非让MyBatis来处理。

2019-11-21
2
Mcnulty
麻烦老师解答,当我的spring-boot启动类目录为=com.yb.mybatisdemo,CoffeeMapper的目录=com.yb.mybatisdemo.mapper, 这种环境下没有在启动类中配置@MapperScanner注解,依然能正常使用,这是mybatis的默认扫描机制么?

作者回复: 是mybatis-spring-boot-autoconfiguration做的,默认会和SpringBoot扫描同样的包

2019-06-04
2
收起评论