公众号merlinsea
以Video模块为例,打通Video微服务访问数据库的链路,其他模块类似
总结:一个springboot项目打通数据库连接分为两步:1、引入配置文件(告诉这个微服务访问哪儿的数据库)和相应的依赖jar包(mybatis整合springboot的启动jar包和mysql连接驱动jar包) 2、编写业务逻辑(controller-service-dao)
1、创建domain包并编写数据库实体类Video并生成getter和setter方法
public class Video { private Integer id; private String title; private String summary; private String coverImg; private Integer price; private Date createTime; private Double point; /** * 生成getter/setter方法 TODO */ }
2、在Video项目的pom文件中添加mybatis依赖和数据库连接驱动依赖
注意:记得在创建cloud微服务项目的父pom文件中声明mybatis所用版本,目的是统一各个微服务之间的jar包版本号,因此我们可以发现下面的Video微服务并没有声明mybatis和mysql的版本号,因为这里的版本号会自动继承父项目pom中声明的版本号。
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
3、编写Video子项目的配置文件application.yml
通过这一步,Video子项目就可以知道我应该连接哪里的数据库,数据库名称是什么等信息
server: port: 7000 spring: application: name: xdclass-video-service datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/cloud_video?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: linliang123453 # 控制台输出sql、下划线转驼峰 mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: tru
以上完成以后就可以按照controller-service-dao层进行Video模块的业务开发
4、controller层编写一个查询video详情的接口
@RestController @RequestMapping("/api/v1/video") public class VideoController { @Autowired private VideoService videoService; @GetMapping("/find_by_id/{video_id}") public Object findById(@PathVariable("video_id") long videoId){ Video video = videoService.findById(videoId); return video; } }
5、service层开发Video模块的核心业务逻辑
@Service public class VideoServiceImpl implements VideoService { @Autowired private VideoMapper videoMapper; @Override public Video findById(long id) { return videoMapper.findById(id); } }
6、dao层的mapper文件,用注解的方式
@Repository public interface VideoMapper { @Select("select * from video where id = #{id}") Video findById(@Param("id") long id); }
7、启动类
@MapperScan("org.example.dao"),是告诉spring中引入的mybatis去扫描哪个包下的接口文件,然后通过反射技术实例化一个mapper类并加入到spring ioc容器中进行管理
@SpringBootApplication @MapperScan("org.example.dao") public class VideoApplication { public static void main(String[] args) { SpringApplication.run(VideoApplication.class,args); } }
关于leetcode算法训练营:
加我微信号私聊参加训练营,尤其是想进入大厂工作的同学,算法是绕不过去的坎,我自己花了三年时间刷算法,总结思路,刷各种数据结构课程,加入我的训练营,我手把手以在线直播课的形式带你理思路,手把手带你写代码,让你真正体会算法之美~,同时遇到不明白的地方可以直接课上和我沟通,彻底解决你的代码困难症~
本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等,所以快加入训练营吧,我们一起进步
奔跑的小梁,公众号:梁霖编程工具库我决定了,算法文档开源!!