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: rootpassword: 123456url: jdbc:mysql://localhost/springboot?characterEncoding=utf-8&useSSl=falsedriver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource#监控统计拦截的filtersfilters: stat,wall,log4j#druid配置#配置初始化大小/最小/最大initialSize: 5minIdle: 5maxActive: 20#获取连接等待超时时间maxWait: 60000#间隔多久进行一次检测,检测需要关闭的空闲连接timeBetweenEvictionRunsMillis: 60000#一个连接在池中最小生存的时间minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: false#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为falsepoolPreparedStatements: falsemaxPoolPreparedStatementPerConnectionSize: 20# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties:druid:stat:mergeSql: trueslowSqlMillis: 5000#mybatis是独立节点,需要单独配置
mybatis-plus:mapper-locations: classpath*:mapper/*.xmltype-aliases-package: com.frank.securityjwt.entityconfiguration: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*/@Beanpublic 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*/@Beanpublic 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 {@Autowiredprivate DemoMapper demoMapper;@Overridepublic 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 {@Autowiredprivate 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成功。

SpringBoot集成Mybatis-Plus、Druid(SQL监控)相关推荐

  1. SpringBoot集成Mybatis项目实操

    本文为<从零打造项目>系列第三篇文章,首发于个人网站. <从零打造项目>系列文章 比MyBatis Generator更强大的代码生成器 SpringBoot项目基础设施搭建 ...

  2. SpringBoot集成Mybatis Plus

    Mybatis Plus是Mybatis的升级版本,提供一些默认的功能实现,只要按照其约定编写代码,就可以充分利用其特性. SpringBoot集成Mybatis Plus步骤: 每个实体类定义一套M ...

  3. BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...

    重构代码,方法抛出异常:BindingException: Invalid bound statement (not found) 提示信息很明显:mybatis没有提供某方法 先不解释问题原因和排查 ...

  4. java整合mybatis,springboot集成mybatis

    # springboot集成mybatis springboot基础mybatis还是很简单的,比之前springmvc集成mybatis要少很多配置,只要大家按照步骤一步一步来,几分钟就 能实现.具 ...

  5. Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获

    mybatis有两种方式,一种是基于XML,一种是基于注解 springboot集成mybatis 首先先创建表,这里都简化了 DROP TABLE IF EXISTS `user`; CREATE ...

  6. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

  7. 一个项目了解 SpringBoot 集成 MyBatis

    SpringBoot 集成 MyBatis 创建项目 1.引入依赖 mybatis-spring-boot-starter 依赖 完整的 pom.xml 2.配置文件 加入mybatis配置 完整的配 ...

  8. SpringBoot教程(十一) | SpringBoot集成Mybatis

    上一篇文章我们介绍了SpringBoot集成JdbcTemplate.简单体验了一下JdbcTemplate框架的用法,今天的内容比较重要,我们来介绍一下SpringBoot集成Mybatis的步骤. ...

  9. Spring Boot (二)集成Mybatis、Druid

    项目GitHub地址 : https://github.com/FrameReserve/TrainingBoot Spring Boot (二)集成Mybatis.Druid,标记地址: https ...

最新文章

  1. 正则表达式--检查颜色值
  2. trace--求矩阵的迹
  3. 2016012075 谢月月 散列函数的应用及其安全性
  4. 如何关掉mysql服务呢
  5. Knative 实战:如何在 Knative 中配置自定义域名及路由规则
  6. 四、用户、群组和权限(未完结)
  7. Spring3系列12-Spring AOP AspectJ
  8. BitAdminCore框架更新日志20180529
  9. 手把手教用XNA开发winphone7游戏(五)大结局
  10. RemoteApp登录到特定的域
  11. 感知机算法python实现
  12. C#_LINQ(LINQ to Entities)
  13. 《How to debug PS4 game》
  14. 局域网无法访问共享新方法
  15. 机器学习 流式特征_Web服务与实时机器学习端点的流式传输
  16. sql统计不为空的字段数_SQL太难?你离完全理解SQL就差这10步!
  17. html5制作当当图书榜页面,当当图书.html
  18. Html5动态桌面,动态桌面软件《Wallpaper Engine》 让你的电脑桌面动起来!
  19. 第二讲 综合评价分析—TOPSIS法
  20. c语言中ch1和ch2是什么意思,2020-05-26(C语言)1.将串str中所有值为ch1的字符转换成ch2的字符,如果str为空串,或者串中不含值为ch1的字符,则什么都不做.2.逆转函数...

热门文章

  1. 炫酷的表白烟花 html+css+js实现的表白烟花特效(程序员专属情人节表白网站)
  2. Unrecognized option: --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED 解决办法
  3. 5G术语(一)-NR、NSA/SA
  4. mel滤波matlab,MFCC(Mel Frequency Cepstral Coefficient)提取过程详解
  5. Linux下的常用命令(干货)
  6. linux中exp命令详解_exp/imp命令的介绍和使用
  7. iOS crash报告问题
  8. linux 源码安装7za
  9. nuxt 如何引入js_Nuxt中引入JS脚本报错
  10. Java架构师教你如何突破瓶颈,下载量瞬秒百万