SpringBoot整合Mybatis+Druid

1.SpringBoot 作为一款约定大于配置的微服务框架,得到了业界的大量推广和应用。对SpringBoot的学习使用可以有效的帮助开发简化开发流程,配置过程,部署过程。

2.数据库的交互是开发过程中很常见的一种业务,数据层的接入方式众多,JDBC,Spring JdbcTemplate,Hibernate,Mybatis等等。传统的JDBC因为模板代码众多,侵入式的事物操作极容易出现问题。老牌的Hibernate从对象的角度去看待数据库,从而在对象层面完全封装数据库操作,简化开发代码,提升开发效率。但也随之带来了定制化SQL使用困难,业务逻辑模型与数据库模型耦合度高,数据量大时性能损耗严重等一系列问题,导致大型互联网项目往往对其避之不及。而MyBatis作为一款轻量级、半自动化的ORM框架脱颖而出。SQL与代码的分离便于维护管理,逻辑标签控制SQL的拼接实现动态SQL,查询结果集与Java对象自动映射,可以编写原生SQL,方便SQL优化等优点让更多的开发选择它。

3.alibaba发布的Druid,号称JAVA语言中最好的数据库连接池,提供强大的监控和扩展功能,进一步提升开发人员的SQL优化效率。与其他数据库连接池的对比:

SpringBoot整合Mybatis+Druid

纸上得来终觉浅,绝知此事要躬行。为了加深对以框架的理解运用,我将以上框架做一次整合运用。技术栈Spring, Spring Boot,Mybatis,Druid,Log4j2, Maven

 搭 建 步 骤 

第一步:Spring Boot的项目构建

采用maven项目管理工具,目录结构如下:

SpringBoot整合Mybatis+Druid

第二步:添加依赖

Spring Boot官方文档中解释,在启用spring-boot-starter后会默认使用logback作为日志框架,本项目选用log4j2,因此需要全局exclude掉Spring Boot默认日志。

SpringBoot整合Mybatis+Druid

很多教学在spring-boot-starter-web处exclude,这种做法是错误的,会导致Spring Boot启动时发现多个SLF4J bingdings。

SpringBoot整合Mybatis+Druid

Mybatis for Spring Boot 依赖。

SpringBoot整合Mybatis+Druid

数据库驱动与数据库连接池依赖。

SpringBoot整合Mybatis+Druid

日志依赖

SpringBoot整合Mybatis+Druid

第三步:启动组件扫描

选用Java注解+自动注入的方式配置Spring Bean,需要开启对特定包的组件扫描。

SpringBoot整合Mybatis+Druid

第四步:配置数据源

使用Spring Boot整合Druid的方式,通过@ConfigurationProperties来做属性注入。Spring的事物管理配置非常方便,事物管理配置数据源即可。

SpringBoot整合Mybatis+Druid

同时在yml文件中添加数据源配置。StatviewConfig开启后可使用druid内置监控。

SpringBoot整合Mybatis+Druid

第五步:配置Mybatis

配置mybatis的SqlSessionFactory。添加MapperScan标签的同时指定sqlSessionFactiory的引用。

SpringBoot整合Mybatis+Druid

Mybatis的Mapper只能用接口定义,默认情况下需要在mapper interface上添加@Mapper标签。

第六步:测试

创建Usr对象并在数据库创建表结构。通过SpringMVC发起对UserService的调用,查询数据库中的user记录。最后查看监控和日志。

首先我们通过POSTMAN发起GET请求:

SpringBoot整合Mybatis+Druid

接着查看Druid内置监。URL: http://localhost:8080/druid/index.html,可以发现Druid Monitor已经帮助我们记录了本次调用的SQL,防火墙统计信息,URL监控等数据。

SpringBoot整合Mybatis+Druid

最后查看控制台输出MyBatis的SQL日志

SpringBoot整合Mybatis+Druid

OK 打完收工!


进群获取高清大纲、往期架构视频、笔记、源码等资料。欢迎大家加入Java高级架构群

:855355016

本群提供免费的学习指导架构资料以及免费的解答职业生涯规划以及面试指导

不懂得问题都可以在本群提出来。

进群修改群备注:开发年限-地区-经验 方便架构师解答问题。

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,

需要突破技术瓶颈的。2、在公司待久了,过得很安逸,

但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的。

3、如果没有工作经验,但基础非常扎实,对java工作机制,

常用设计思想,常用java开发框架掌握熟练的。

4、觉得自己很牛B,一般需求都能搞定。

但是所学的知识点没有系统化,很难在技术领域继续突破的。

5. 群号:855355016进阶高级架构群备注好信息!里面有BAT大牛直播授课

进群获取高清大纲、往期架构视频、笔记、源码等资料