本文旨在用最通俗的语言讲述最枯燥的基本知识

最近身边的程序员掀起了学习springboot的热潮,说什么学会了springboot在大街上就可以横着走、什么有了springboot妈妈再也不担心我的编程了、什么BAT都喜欢的框架...听得作者那个心痒痒的,于是找了个时间,下载了个idea来玩一波springboot,对了...用springboot最好用idea,如果你还在用eclipse,删了吧。

在这里解释一下为什么是springboot+mybatis+druid,是因为作者认为但凡任何一个有灵魂的项目,都少不了数据库,作者不喜欢用JPA那种混SQL的语法,因此选了mybatis,而Druid是阿里系(真香~)的一种数据库连接池框架,在上一个项目作者用的屡试不爽,因此打算继续用,为啥屡试不爽?看文末吧。

文章提纲:

  1. 创建springboot工程
  2. 配置pom.xml
  3. 配置数据源
  4. 设置mybatis
  5. hello world
  6. 设置Druid监控配置

1. 创建springboot工程

只要你有idea,创建一个springboot工程,就跟捏死一个蚂蚁一样简单,因为idea里深度集成了对springboot项目的支持,你直接不停的next到最后,它就会帮你创建出一个springboot工程。

  1. 首先打开idea->Create New project->选择项目类型:这里选择spring initializr,然后next。

  1. 创建项目,填写项目名称,注意:不要能驼峰写法,可以用中横线,填写完毕后继续next。

  1. 选择依赖,所谓依赖就是你在设计这个项目的框架时,分析这个项目需要用到哪些jar或者组件,比如缓存要用到Redis,数据库要用到MySQL等...这里因为演示项目,就不选择太多其它乱七八糟的依赖了。

  1. 选好依赖之后,又是一路狂点next,直到最后finish一下,一个springboot项目就创建好了。

2. 配置pom.xml

想想,我们需要哪些jar?
数据库要用到mybatis,数据库连接池要用到Druid、MySQL桥接器要用到mysql-connector,因此要maven仓库(点我去仓库)中找到搜索这些pom加进去。注意,mybatis要用mybatis-spring-boot-starter。

       <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency>

把上面这些pom放到pom.xml的dependencies中

细心的老铁会发现,MySQL的version里的内容是红色的,这是什么原因呢?
这是因为我们引入pom时,这些版本的jar在本地maven仓库还没有,而Druid的pom里的version没有显示红色,是因为之前的项目用到了这个版本的Druid,已经被下载到本地Maven仓库里了。
因此我们需要把本地没有的jar下载到本地仓库,右键pom.xml弹出菜单,选择Maven,弹出菜单选择reimport

Reimport过程中再idea底部会有进度条显示,等进度条消失,在观察pom.xml,红色已经消失,说明依赖已经装备完成。

  1. 配置数据源

接下来就是要多springboot项目做一个全局配置,默认会在src->main->resource目录下生产空白文件application.properties,作者喜欢用yml因此直接改名成yml即可。
首先是数据源的配置,下面是一份数据源的配置,每个参数的解释都写了注释,因此读者可以直接复制一下内容进去,只需要改一下url、username、password

spring:#profiles: devmessages:basename: i18n/Messages,i18n/Pagesdatasource:type: com.alibaba.druid.pool.DruidDataSource    # 配置当前要使用的数据源的操作类型driver-class-name: org.gjt.mm.mysql.Driver        # 配置MySQL的驱动程序类url: jdbc:mysql://localhost:3306/wkt_stat           # 数据库连接地址username: root                                  # 数据库用户名password: root                            # 数据库连接密码dbcp2:                                          # 进行数据库连接池的配置min-idle: 5                                   # 数据库连接池的最小维持连接数initial-size: 5                               # 初始化提供的连接数max-total: 5                                  # 最大的连接数max-wait-millis: 200                          # 等待连接获取的最大超时时间

4. 设置mybatis

继续在application.yml中设置mybatis,mybatis的配置也简单,
主要是为了设置mybatis的配置文件已经mapper文件所在。

  1. 首先在resource目录下创建一个mybatis-config.xml文件,文件内容为:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><mappers></mappers>
</configuration>
  1. 在main包中的根目录下创建一个存放mapper实体的资源文件,在resource文件下创建一个文件夹mapper用来存放mapper的xml文件。

  1. 配置好资源文件路径之后,就可以在application.yml中加入mybatis的配置了,如下是一个mybatis的配置内容:
#mybatis的mapper配置文件
mybatis:config-location: classpath:mybatis-config.xml  # mybatis配置文件所在路径#mapper-locations: classpath:mapper/*.xml   # 所有的mapper映射文件type-aliases-package: com.becl.dao.mapper # 定义所有操作类的别名所在包
debug: true

最终application.yml的内容如下图:

  1. 此时需要有一个数据库表来做测试,我们在数据库创建一个表,并且插入一条数据:
CREATE TABLE Memeber (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`name`  varchar(255) NULL ,
PRIMARY KEY (`id`)
);INSERT INTO memeber VALUES(1,"jas")
  1. 在mapper包中创建Memeber的mapper接口:
public interface MemeberMapper {/*** 根据ID获取记录* @param id* @return*/public Map findObjectById(Integer id);
}
  1. 在resource中的mapper文件夹创建memberMapper.xml,并且在mapper中增加一个findObjectById的SQL查询语句。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--映射文件配置,namespace指向接口-->
<mapper namespace="com.example.mybatisanddruid.mapper.MemeberMapper">
#根据ID查询记录
<select id="findObjectById" parameterType="Integer" resultType="Map">select * from memeber where id = #{value}</select>
</mapper>

5. hello world

走到这一步,基本上已经是大功告成了,我们来写一个测试类试试,在根目录创建一个controller的包,在包中创建一个Java类,如下:

@Controller
@RequestMapping("/test")
public class TestController {@Resourceprivate MemeberMapper memeberMapper=null;@RequestMapping("/one")@ResponseBodypublic Map testdb(){return  memeberMapper.findObjectById(1);}
}

创建完之后,我们运行项目,找到启动类MybatisAndDruidApplication右键run,发现报错,提示没有扫描到mapper包,为什么呢?那是mapper需要手动在启动类中加入:

@MapperScan("com.example.mybatisanddruid.mapper")

这样启动类就变成:

@SpringBootApplication
@MapperScan("com.example.mybatisanddruid.mapper")
public class MybatisAndDruidApplication {public static void main(String[] args) {SpringApplication.run(MybatisAndDruidApplication.class, args);}
}

再次运行,没有报错,在浏览器输入:http://localhost:8888/test/one
输出了ID为1的记录:

{"name":"jas","id":1}

由此可见,springboot-mybatis已经搭建成功,此时有人会问,那Druid呢?

  1. 设置Druid监控配置

druid的使用需要做一些配置,现在我们来在根目录下创建一个包config,在config包中间创建一个叫做DruidConfig.java,并且在里写入下面的内容:

@Configuration
public class DruidConfig {@Beanpublic ServletRegistrationBean druidServlet() { // 主要实现WEB监控的配置处理ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 进行druid监控的配置处理操作servletRegistrationBean.addInitParameter("allow","127.0.0.1,192.168.1.159"); // 白名单servletRegistrationBean.addInitParameter("deny", "192.168.1.200"); // 黑名单servletRegistrationBean.addInitParameter("loginUsername", "stat"); // 用户名servletRegistrationBean.addInitParameter("loginPassword", "Wkt_sTat_1031"); // 密码servletRegistrationBean.addInitParameter("resetEnable", "false"); // 是否可以重置数据源return servletRegistrationBean ;}@Beanpublic FilterRegistrationBean filterRegistrationBean() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean() ;filterRegistrationBean.setFilter(new WebStatFilter());filterRegistrationBean.addUrlPatterns("/*"); // 所有请求进行监控处理filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");return filterRegistrationBean ;}@Bean@ConfigurationProperties(prefix = "spring.datasource")public DataSource druidDataSource() {return new DruidDataSource();}}

配置中的内容就不一一细讲, 有兴趣的直接百度一下druid就出来很多答案了,现在重新运行一下项目,运行成功之后,在浏览器中输入:http://localhost:8888/druid
这时候,druid监控平台就出现了

此时我们输入在DruidConfig中设置的loginUsername和loginPassword点击登录,一个完整的druid监控管理平台就呈现在我们啦~

Druid非常强大,在这里你可以查看SQL的执行情况、慢SQL、API请求情况等,根据这些可以做一些性能的调优,至于详细的用法,就靠大家自行学习啦~

如果有老铁需要项目源码,请加我微信:sisi-ceo。


觉得本文对你有帮助?请分享给更多人
关注「编程无界」,提升装逼技能

单手撸了个springboot+mybatis+druid相关推荐

  1. 单手撸了个springboot+mybatis+druid 1

    本文旨在用最通俗的语言讲述最枯燥的基本知识 最近身边的程序员掀起了学习springboot的热潮,说什么学会了springboot在大街上就可以横着走.什么有了springboot妈妈再也不担心我的编 ...

  2. 3分钟搞定SpringBoot+Mybatis+druid多数据源和分布式事务

    在一些复杂的应用开发中,一个应用可能会涉及到连接多个数据源,所谓多数据源这里就定义为至少连接两个及以上的数据库了. 下面列举两种常用的场景: 一种是读写分离的数据源,例如一个读库和一个写库,读库负责各 ...

  3. SpringBoot+Mybatis+Druid批量更新 multi-statement not allow异常

    SpringBoot+Mybatis+Druid批量更新 multi-statement not allow异常 参考文章: (1)SpringBoot+Mybatis+Druid批量更新 multi ...

  4. 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建

    首页 Android Java 服务器 标签云 作品 关于 赞助列表  <a href="https://github.com/RayeWang" class="f ...

  5. Springboot+Mybatis+Druid+Maven多模块项目搭建遇到的各种吭

    Springboot+Mybatis+Druid+Maven多模块项目搭建 这里记录一下搭建多模块遇到的吭 首先建立一个父级空项目,在pox里修改下配置 2,建立DaoMapper层和ModelEnt ...

  6. springboot maven打包jar运行,springboot mybatis druid,demo源码

    注:本文介绍的mysql版本是5.x ,如果mysql升级到8 有几个地方需要改动 https://blog.csdn.net/a704397849/article/details/108396563 ...

  7. SpringBoot + Mybatis + Druid + PageHelper 实现多数据源并分页

    点击关注公众号,Java干货及时送达 本篇文章主要讲述的是SpringBoot整合Mybatis.Druid和PageHelper 并实现多数据源和分页.其中SpringBoot整合Mybatis这块 ...

  8. SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者: 虚无境 cnblogs.com/xuwujing/p/89 ...

  9. SpringBoot + Mybatis + Druid + PageHelper 实现多数据源分页

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 虚无境的博客 来源 | http://8rr. ...

最新文章

  1. 安装QT的时候出现PATH_MAX错误
  2. Linux-安装 Ubuntu Server 16.04 X64(图文教程详细版)
  3. memset()的效率以及源码分析
  4. C++ 中explicit的使用
  5. openstack架构详解图_英特尔顶级技术专家合力缔造精品:Linux开源网络全栈详解...
  6. mtk2502和nrf52832哪个好_蓝牙芯片NRF51822与NRF52832的性能对比
  7. base64解码_一份简明的 Base64 原理解析
  8. Android功能点(一)——判断网络是否真正连通
  9. .net人员用Java 之Java EE
  10. 温度传感器利用寄存器计算出温度值
  11. Windows平台下使用GoLand生成Linux可执行文件
  12. 去天翎咨询myapps2.4的问题
  13. 重庆云阳2021云中高考成绩查询,重庆云阳中学2021年招生简章
  14. kika平台广告sdk集成问题
  15. c语言用十年算入门,初识C语言_十年饮冰 难凉热血的技术博客_51CTO博客
  16. 苹果公布Apple Watch手表新专利,可穿戴设备少不了Find My技术
  17. mysql 中间表 性能_mysql性能优化
  18. AD生成BOM表_材料清单 (Bill of Material)
  19. AutoLeader控制组——51单片机学习笔记(一)
  20. AcWing1884. COW

热门文章

  1. 网络安全应急演练方案内容_开展应急演练,筑牢网络安全
  2. html点击图片换几种颜色,css实现点击给物品换颜色
  3. JS的三种消息提示框alert confirm prompt
  4. 自定义SpringBoot start 自动打印日志
  5. 遮掩java_Java×××:重载、重写、隐藏、遮蔽、遮掩(2)
  6. 说说 ES6 的 let 指令
  7. Xcode使用心得01:断点中断问题和调整编译目标[转]
  8. iOS11 UITableViewCell滑动事件改动
  9. python绝技 — 使用PyGeoIP关联IP地址和物理位置
  10. 字王谈M1字形与个人云字库