SpringBoot | 第十章:搭建SpringBoot集成Mybatis+druid连接池监控

前言

    今年注定是不平凡的一年,Spring家族的一套SpringBoot+SpringCloud掀起来一阵热潮,互联网微服务技术火热膨胀,身边的程序员都在学习,我经不住诱惑,准备从零开始学,并且以记录博客的形式;

一. 创建springboot工程

 1.打开Eclipse,点击File-> New Maven project->填写Group id和Artifact id->点击Finish,一个简单的项目架子创建完了;

  SpringBoot | 第十章:搭建SpringBoot集成Mybatis+druid连接池监控_第1张图片

2. pom.xml文件添加依赖


	4.0.0
	com.thinkingcao
	springboot-mybatis-druid
	0.0.1-SNAPSHOT
	
		org.springframework.boot
		spring-boot-starter-parent
		2.1.0.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
		
			org.projectlombok
			lombok
			true
		
		
		
		
			org.mybatis.spring.boot
			mybatis-spring-boot-starter
			1.1.1
		
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
		
		
			mysql
			mysql-connector-java
			5.1.36
		
		
			org.springframework.boot
			spring-boot-starter
		
		
		
		
			com.alibaba
			druid
			1.1.10
		

	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

3.  新建MybatisAndDruidApplication启动测试类,运行项目,测试能否正常启动 

package com.thinkingcao;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 
/**
 * 
 * @author cao_wencao
 * @date 2018年12月4日 下午1:59:57
 * 
*/ @SpringBootApplication public class MybatisAndDruidApplication { /** *
  
	 * @author cao_wencao
	 * @param args
	 * 
*/ public static void main(String[] args) { SpringApplication.run(MybatisAndDruidApplication.class, args); } }

这个时候由于没有配置数据源,而我们依赖里面加了maven依赖,启动会报错,具体解决查看博客:Spring boot 数据源未配置,启动异常

4.  配置数据源

  在src->main->resource下面新建配置文件application.yml

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

5.  设置mybatis

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

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




    
    

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

SpringBoot | 第十章:搭建SpringBoot集成Mybatis+druid连接池监控_第2张图片

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

 #mybatis的mapper配置文件
 mybatis:
  config-location: classpath:mybatis-config.xml  # mybatis配置文件所在路径
  mapper-locations: classpath:mapper/*.xml   # 所有的mapper映射文件
  type-aliases-package: com.thinkingcao.modules.mapper # 定义所有操作类的别名所在包
 debug: true
 logging:
  level:
    com.thinkingcao.modules.mapper: debug   #打印mybatis的SQL

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

 SpringBoot | 第十章:搭建SpringBoot集成Mybatis+druid连接池监控_第3张图片

mybatis.type-aliases-package来指明和数据库映射的实体的所在包。

mybatis.mapper-locations来指明mapper的xml文件存放位置

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

CREATE TABLE Memeber (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`name`  varchar(255) NULL ,
PRIMARY KEY (`id`)
);

INSERT INTO memeber VALUES(1,"jay")

(5). 在mapper包中创建Memeber的mapper接口:

import java.util.Map;

import org.apache.ibatis.annotations.Param;

public interface MemeberMapper {
	//根据id获取记录
	public Map findObjectById(@Param("id")Integer id);
	
}

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


 


	
	

(7). 新建TestController测试

import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.thinkingcao.modules.mapper.MemeberMapper;

@Controller
@RequestMapping("/test")
public class TestController {
	@Resource
	private MemeberMapper memeberMapper = null;

	@RequestMapping("/one")
	@ResponseBody
	public Map testdb() {
		return memeberMapper.findObjectById(1);
	}
}

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

@MapperScan("com.thinkingcao.modules.mapper")
package com.thinkingcao;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 
 * @author cao_wencao
 * @date 2018年12月4日 下午1:59:57
 * 
*/ @SpringBootApplication @MapperScan("com.thinkingcao.modules.mapper") public class MybatisAndDruidApplication { /** *
  
	 * @author cao_wencao
	 * @param args
	 * 
*/ public static void main(String[] args) { SpringApplication.run(MybatisAndDruidApplication.class, args); } }

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

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

  由此可见,springboot-mybatis已经搭建成功;

6. 搭建Druid监控平台

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

package com.thinkingcao.config;

import javax.sql.DataSource;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;

/**
 * 
 * @author cao_wencao
 * @date 2018年12月4日 下午3:31:31
 * 
*/ @Configuration public class DruidConfig { @Bean public 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", "admin"); // 用户名 servletRegistrationBean.addInitParameter("loginPassword", "111111"); // 密码 servletRegistrationBean.addInitParameter("resetEnable", "false"); // 是否可以重置数据源 return servletRegistrationBean; } @Bean public 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(); } }

 最后贴一张项目完整目录

 SpringBoot | 第十章:搭建SpringBoot集成Mybatis+druid连接池监控_第4张图片

现在重新运行一下项目,运行成功之后,在浏览器中输入地址: http://localhost:8080/druid
这时候,druid监控平台就出现了


SpringBoot | 第十章:搭建SpringBoot集成Mybatis+druid连接池监控_第5张图片

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

SpringBoot | 第十章:搭建SpringBoot集成Mybatis+druid连接池监控_第6张图片

Druid非常强大,在这里你可以查看SQL的执行情况、慢SQL、API请求情况等,根据这些可以做一些性能的调优,至于详细的用法,百度都可以了解到;

项目源码 :https://github.com/Thinkingcao/SpringBootBucket/tree/master/springboot-mybatis-druid

你可能感兴趣的:(【16】SpringBoot,SpringBoot2.x)