SpringBoot集成Mybatis-Plus、Druid(SQL监控)

1.创建springboot项目,先实现mybatis-plus、druid

2.pom文件引入

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--注意引入druid需要引入log4j,不然会报错-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

application.yml

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost/springboot?characterEncoding=utf-8&useSSl=false
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #监控统计拦截的filters
    filters: stat,wall,log4j
    #druid配置
    #配置初始化大小/最小/最大
    initialSize: 5
    minIdle: 5
    maxActive: 20
    #获取连接等待超时时间
    maxWait: 60000
    #间隔多久进行一次检测,检测需要关闭的空闲连接
    timeBetweenEvictionRunsMillis: 60000
    #一个连接在池中最小生存的时间
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
    poolPreparedStatements: false
    maxPoolPreparedStatementPerConnectionSize: 20
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    connectionProperties:
      druid:
        stat:
          mergeSql: true
          slowSqlMillis: 5000

#mybatis是独立节点,需要单独配置
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  type-aliases-package: com.frank.securityjwt.entity
  configuration:
    map-underscore-to-camel-case: true
DruidConfiguration
package com.frank.securityjwt.config;


import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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 org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;
/**
 * @author 小石潭记
 * @date 2020/6/29 21:33
 * @Description: druid参数配置
 *  http://localhost:8080/druid/login.html
 */

@Configuration
@PropertySource(value = "classpath:application.yml")
public class DruidConfiguration {

    /**
     * @todo 数据源配置
     */
    @Bean(destroyMethod = "close", initMethod = "init")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

    /**
     * druid
     * 注册一个StatViewServlet
     * @return
     */
    @Bean
    public ServletRegistrationBean druidStatViewServlet(){
        //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");

        //添加初始化参数:initParams
        //白名单:
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
        //servletRegistrationBean.addInitParameter("deny","192.168.1.73");
        //登录查看信息的账号密码.
        servletRegistrationBean.addInitParameter("loginUsername","admin");
        servletRegistrationBean.addInitParameter("loginPassword","123456");
        //是否能够重置数据.
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
    }

    /**
     * druid过滤器
     * 注册一个:filterRegistrationBean
     * @return
     */
    @Bean
    public FilterRegistrationBean druidStatFilter(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //添加过滤规则.
        filterRegistrationBean.addUrlPatterns("/*");
        //添加不需要忽略的格式信息.
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }

}

DemoMapper
package com.frank.securityjwt.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.frank.securityjwt.entity.DemoEntity;

import java.util.List;

/**
 * @author 小石潭记
 * @date 2020/6/29 21:23
 * @Description: ${todo}
 */
public interface DemoMapper extends BaseMapper<DemoEntity> {

    List<DemoEntity> getUser();
}
DemoEntity
package com.frank.securityjwt.entity;

import lombok.Data;

/**
 * @author 小石潭记
 * @date 2020/6/29 21:16
 * @Description: ${todo}
 */
@Data
public class DemoEntity {

    private Integer id;

    private Integer age;

    private String name;

    private Float height;

}
DemoService
package com.frank.securityjwt.service;

import com.frank.securityjwt.entity.DemoEntity;

import java.util.List;

/**
 * @author 小石潭记
 * @date 2020/6/29 21:20
 * @Description: ${todo}
 */
public interface DemoService {

    List<DemoEntity> getUser();

}
DemoServiceImpl
package com.frank.securityjwt.service.impl;

import com.frank.securityjwt.dao.DemoMapper;
import com.frank.securityjwt.entity.DemoEntity;
import com.frank.securityjwt.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 小石潭记
 * @date 2020/6/29 21:21
 * @Description: ${todo}
 */
@Service
public class DemoServiceImpl implements DemoService {

    @Autowired
    private DemoMapper demoMapper;

    @Override
    public List<DemoEntity> getUser() {
        return demoMapper.getUser();
    }
}
DemoController
package com.frank.securityjwt.web;

import com.frank.securityjwt.entity.DemoEntity;
import com.frank.securityjwt.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author 小石潭记
 * @date 2020/6/29 21:19
 * @Description: ${todo}
 */
@RestController
@RequestMapping("/test")
public class DemoController {

    @Autowired
    private DemoService service;

    @RequestMapping("/getUser")
    public List<DemoEntity> getUser(){
        List<DemoEntity> result = service.getUser();
        return result;
    }

}

SecurityJwtApplication
package com.frank.securityjwt;

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

@SpringBootApplication
@MapperScan(basePackages = "com.frank.securityjwt.dao")
public class SecurityJwtApplication {

    public static void main(String[] args) {
        SpringApplication.run(SecurityJwtApplication.class, args);
    }

}

DemoMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.frank.securityjwt.dao.DemoMapper">
    <select id="getUser" resultType="com.frank.securityjwt.entity.DemoEntity">
        SELECT * FROM girl
    </select>
</mapper>

sql脚本:

-- --------------------------------------------------------
-- 主机:                           127.0.0.1
-- 服务器版本:                        5.6.40 - MySQL Community Server (GPL)
-- 服务器操作系统:                      Win64
-- HeidiSQL 版本:                  8.2.0.4675
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

-- 导出 springboot 的数据库结构
CREATE DATABASE IF NOT EXISTS `springboot` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `springboot`;


-- 导出  表 springboot.girl 结构
CREATE TABLE IF NOT EXISTS `girl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(11) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `height` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- 正在导出表  springboot.girl 的数据:~3 rows (大约)
DELETE FROM `girl`;
/*!40000 ALTER TABLE `girl` DISABLE KEYS */;
INSERT INTO `girl` (`id`, `age`, `name`, `height`) VALUES
	(1, 12, '小红', 1),
	(2, 16, '小皇', 2),
	(3, 20, '小花', 1);
/*!40000 ALTER TABLE `girl` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

启动项目测试:http://localhost:8080/test/getUser

http://localhost:8080/druid/login.html 使用配置的账号密码登陆

自此springboot集成mybatis、druid成功。

猜你喜欢

转载自blog.csdn.net/qq_33371766/article/details/107029183