单手撸了个springboot+mybatis+druid

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

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

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

文章提纲:

创建springboot工程

配置pom.xml

配置数据源

设置mybatis

hello world

设置Druid监控配置

1. 创建springboot工程

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

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

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

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

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

2. 配置pom.xml

想想,我们需要哪些jar?

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

1

2

3 mysql

4 mysql-connector-java

5 5.1.6

6

7

8

9 com.alibaba

10 druid

11 1.1.10

12

13

14

15 org.mybatis.spring.boot

16 mybatis-spring-boot-starter

17 1.3.2

18

复制代码

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

细心的老铁会发现,MySQL的version里的内容是红色的,这是什么原因呢?

这是因为我们引入pom时,这些版本的jar在本地maven仓库还没有,而Druid的pom里的version没有显示红色,是因为之前的项目用到了这个版本的Druid,已经被下载到本地Maven仓库里了。

因此我们需要把本地没有的jar下载到本地仓库,右键pom.xml弹出菜单,选择Maven,弹出菜单选择reimport

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

配置数据源

接下来就是要多springboot项目做一个全局配置,默认会在src->main->resource目录下生产空白文件application.properties,作者喜欢用yml因此直接改名成yml即可。

首先是数据源的配置,下面是一份数据源的配置,每个参数的解释都写了注释,因此读者可以直接复制一下内容进去,只需要改一下url、username、password

1spring:

2 #profiles: dev

3 messages:

4 basename: i18n/Messages,i18n/Pages

5 datasource:

6 type: com.alibaba.druid.pool.DruidDataSource # 配置当前要使用的数据源的操作类型

7 driver-class-name: org.gjt.mm.mysql.Driver # 配置MySQL的驱动程序类

8 url: jdbc:mysql://localhost:3306/wkt_stat # 数据库连接地址

9 username: root # 数据库用户名

10 password: root # 数据库连接密码

11 dbcp2: # 进行数据库连接池的配置

12 min-idle: 5 # 数据库连接池的最小维持连接数

13 initial-size: 5 # 初始化提供的连接数

14 max-total: 5 # 最大的连接数

15 max-wait-millis: 200 # 等待连接获取的最大超时时间

复制代码

4. 设置mybatis

继续在application.yml中设置mybatis,mybatis的配置也简单,

主要是为了设置mybatis的配置文件已经mapper文件所在。

首先在resource目录下创建一个mybatis-config.xml文件,文件内容为:

1

2

3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

4 "http://mybatis.org/dtd/mybatis-3-config.dtd">

5

6

7

8

复制代码

在main包中的根目录下创建一个存放mapper实体的资源文件,在resource文件下创建一个文件夹mapper用来存放mapper的xml文件。

配置好资源文件路径之后,就可以在application.yml中加入mybatis的配置了,如下是一个mybatis的配置内容:

1#mybatis的mapper配置文件

2mybatis:

3 config-location: classpath:mybatis-config.xml # mybatis配置文件所在路径

4 #mapper-locations: classpath:mapper/*.xml # 所有的mapper映射文件

5 type-aliases-package: com.becl.dao.mapper # 定义所有操作类的别名所在包

6debug: true

复制代码

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

此时需要有一个数据库表来做测试,我们在数据库创建一个表,并且插入一条数据:

1CREATE TABLE Memeber (

2`id` int(11) NOT NULL AUTO_INCREMENT ,

3`name` varchar(255) NULL ,

4PRIMARY KEY (`id`)

5);

6

7INSERT INTO memeber VALUES(1,"jas")

复制代码

在mapper包中创建Memeber的mapper接口:

1public interface MemeberMapper {

2 /**

3 * 根据ID获取记录

4 * @param id

5 * @return

6 */

7 public Map findObjectById(Integer id);

8}

复制代码

在resource中的mapper文件夹创建memberMapper.xml,并且在mapper中增加一个findObjectById的SQL查询语句。

1

2

3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

5

6

7#根据ID查询记录

8

9 select * from memeber where id = #{value}

10

11

复制代码

5. hello world

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

1@Controller

2@RequestMapping("/test")

3public class TestController {

4 @Resource

5 private MemeberMapper memeberMapper=null;

6

7 @RequestMapping("/one")

8 @ResponseBody

9 public Map testdb(){

10 return memeberMapper.findObjectById(1);

11 }

12}

复制代码

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

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

复制代码

这样启动类就变成:

1@SpringBootApplication

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

3public class MybatisAndDruidApplication {

4

5 public static void main(String[] args) {

6 SpringApplication.run(MybatisAndDruidApplication.class, args);

7 }

8}

复制代码

再次运行,没有报错,在浏览器输入:http://localhost:8888/test/one

输出了ID为1的记录:

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

复制代码

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

设置Druid监控配置

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

1@Configuration

2public class DruidConfig {

3 @Bean

4 public ServletRegistrationBean druidServlet() { // 主要实现WEB监控的配置处理

5 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 进行druid监控的配置处理操作

6 servletRegistrationBean.addInitParameter("allow",

7 "127.0.0.1,192.168.1.159"); // 白名单

8 servletRegistrationBean.addInitParameter("deny", "192.168.1.200"); // 黑名单

9 servletRegistrationBean.addInitParameter("loginUsername", "stat"); // 用户名

10 servletRegistrationBean.addInitParameter("loginPassword", "Wkt_sTat_1031"); // 密码

11 servletRegistrationBean.addInitParameter("resetEnable", "false"); // 是否可以重置数据源

12 return servletRegistrationBean ;

13 }

14 @Bean

15 public FilterRegistrationBean filterRegistrationBean() {

16 FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean() ;

17 filterRegistrationBean.setFilter(new WebStatFilter());

18

19 filterRegistrationBean.addUrlPatterns("/*"); // 所有请求进行监控处理

20 filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");

21 return filterRegistrationBean ;

22 }

23 @Bean

24 @ConfigurationProperties(prefix = "spring.datasource")

25 public DataSource druidDataSource() {

26 return new DruidDataSource();

27 }

28

29}

复制代码

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

这时候,druid监控平台就出现了

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

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

本文用到的技术栈

springboot

mybatis

现在加群即可获取更加详细的Java架构脑图,还有Java工程化、高性能及分布式、高性能、高架构、zookeeper、性能调优、Spring、MyBatis、Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限及相关视频资料,群号:835638062 点击链接加入群聊【Java高级架构学习交流】:https://jq.qq.com/?_wv=1027&k=5S3kL3v

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容