springboot+druid+mybatis-plus配置详解(代码片段)

shine-rainbow shine-rainbow     2022-12-30     394

关键词:

网上找了很多关于springboot+druid+mybatis-Plus的配置,遇见的很多问题 也没找到好的解决方案。折腾了好几天终于自己配置通过了。

 

springboot的pom文件

 1  <parent>
 2         <groupId>org.springframework.boot</groupId>
 3         <artifactId>spring-boot-starter-parent</artifactId>
 4         <version>2.0.4.RELEASE</version>
 5         <relativePath/> <!-- lookup parent from repository -->
 6     </parent>
 7 
 8     <properties>
 9         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
10         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
11         <java.version>1.8</java.version>
12         <mybatisplus.version>2.2.0</mybatisplus.version>
13         <mybatisplus-spring-boot-starter.version>1.0.5</mybatisplus-spring-boot-starter.version>
14     </properties>
15 
16     <dependencies>
17         <dependency>
18             <groupId>org.springframework.boot</groupId>
19             <artifactId>spring-boot-starter-web</artifactId>
20         </dependency>
21         <dependency>
22             <groupId>org.springframework.boot</groupId>
23             <artifactId>spring-boot-devtools</artifactId>
24         </dependency>
25         <!--mybatis plus start-->
26         <dependency>
27             <groupId>com.baomidou</groupId>
28             <artifactId>mybatisplus-spring-boot-starter</artifactId>
29             <version>$mybatisplus-spring-boot-starter.version</version>
30         </dependency>
31         <dependency>
32             <groupId>com.baomidou</groupId>
33             <artifactId>mybatis-plus</artifactId>
34             <version>$mybatisplus.version</version>
35         </dependency>
36         <!--mybatis-plus end-->
37 
38         <dependency>
39             <groupId>mysql</groupId>
40             <artifactId>mysql-connector-java</artifactId>
41             <scope>runtime</scope>
42         </dependency>
43         <dependency>
44             <groupId>org.springframework.boot</groupId>
45             <artifactId>spring-boot-starter-tomcat</artifactId>
46             <scope>provided</scope>
47         </dependency>
48         <dependency>
49             <groupId>org.springframework.boot</groupId>
50             <artifactId>spring-boot-starter-test</artifactId>
51             <scope>test</scope>
52         </dependency>
53         <!--配置druid数据源-->
54         <dependency>
55             <groupId>com.alibaba</groupId>
56             <artifactId>druid</artifactId>
57             <version>1.1.9</version>
58         </dependency>
59     </dependencies>

application.yml 文件

 1 spring:
 2   datasource:
 3     url: jdbc:mysql://xxxx/selll?useUnicode=true&characterEncoding=utf-8&useSSL=false
 4     username: root
 5     password: xxx
 6     driver-class-name: com.mysql.jdbc.Driver
 7     platform: mysql
 8     type: com.alibaba.druid.pool.DruidDataSource
 9     # 下面为连接池的补充设置,应用到上面所有数据源中
10     # 初始化大小,最小,最大
11     initialSize: 1
12     minIdle: 3
13     maxActive: 20
14     # 配置获取连接等待超时的时间
15     maxWait: 60000
16     # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
17     timeBetweenEvictionRunsMillis: 60000
18     # 配置一个连接在池中最小生存的时间,单位是毫秒
19     minEvictableIdleTimeMillis: 30000
20     validationQuery: select ‘x‘
21     testWhileIdle: true
22     testOnBorrow: false
23     testOnReturn: false
24     # 打开PSCache,并且指定每个连接上PSCache的大小
25     poolPreparedStatements: true
26     maxPoolPreparedStatementPerConnectionSize: 20
27     # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall‘用于防火墙
28     filters: stat,wall,slf4j
29     # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
30     connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
31     # 合并多个DruidDataSource的监控数据
32     #useGlobalDataSourceStat: true
33 server:
34   port: 8080
35 mybatis-plus:
36   mapper-locations: mapper/*.xml
37   type-aliases-package: com.wsy.dcxt.pojo
38   global-config:
39     id-type: 0
40     field-strategy: 2
41     capital-mode: true
42     refresh-mapper: true

数据源的配置

 1 package com.wsy.dcxt.config.dao;
 2 
 3 import java.beans.PropertyVetoException;
 4 
 5 import com.alibaba.druid.pool.DruidDataSource;
 6 import org.mybatis.spring.annotation.MapperScan;
 7 import org.springframework.beans.factory.annotation.Value;
 8 import org.springframework.boot.context.properties.ConfigurationProperties;
 9 import org.springframework.context.annotation.Bean;
10 import org.springframework.context.annotation.Configuration;
11 
12 import javax.sql.DataSource;
13 
14 /**
15  * 配置datasource到ioc容器里面
16  * 
17  * @author xiangze
18  *
19  */
20 @Configuration
21 @MapperScan(basePackages = "com.wsy.dcxt.dao")
22 public class DataSourceConfiguration 
23     @Value("$spring.datasource.driver-class-name")
24     private String jdbcDriver;
25     @Value("$spring.datasource.url")
26     private String jdbcUrl;
27     @Value("$spring.datasource.username")
28     private String jdbcUsername;
29     @Value("$spring.datasource.password")
30     private String jdbcPassword;
31 
32 
33     /**
34      * 生成与spring-dao.xml对应的bean dataSource
35      * 
36      * @return
37      * @throws PropertyVetoException
38      */
39     @Bean(name = "dataSource")
40     @ConfigurationProperties(prefix = "spring.datasource")
41     public DataSource dataSource()
42         return new DruidDataSource();
43     
44 
45 

Mybatis-Plus的配置

 1 package com.wsy.dcxt.config.dao;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.sql.DataSource;
 6 import org.apache.ibatis.plugin.Interceptor;
 7 import com.alibaba.druid.pool.DruidDataSource;
 8 import com.baomidou.mybatisplus.MybatisSessionFactoryBuilder;
 9 import com.baomidou.mybatisplus.entity.GlobalConfiguration;
10 import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
11 import com.baomidou.mybatisplus.plugins.PerformanceInterceptor;
12 import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
13 import org.apache.ibatis.session.SqlSessionFactory;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16 import org.springframework.beans.factory.annotation.Autowired;
17 import org.springframework.beans.factory.annotation.Qualifier;
18 import org.springframework.beans.factory.annotation.Value;
19 import org.springframework.context.annotation.Bean;
20 import org.springframework.context.annotation.Configuration;
21 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
22 import org.springframework.core.io.support.ResourcePatternResolver;
23 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
24 
25 @Configuration
26 public class MybatisPlusConfig 
27     private static final Logger log= LoggerFactory.getLogger(DataSourceConfiguration.class);
28     @Autowired
29     private DataSource dataSource;
30     @Value("$mybatis-plus.global-config.id-type")
31     private Integer idType;
32     @Value("$mybatis-plus.global-config.field-strategy")
33     private int fieldStrategy;
34     @Value("$mybatis-plus.global-config.capital-mode")
35     private boolean capitalMode;
36     @Value("$mybatis-plus.mapper-locations")
37     private String mapperLocations;
38     @Value("$mybatis-plus.type-aliases-package")
39     private String typeAliasesPackage;
40     @Value("$mybatis-plus.global-config.refresh-mapper")
41     private boolean refreshMapper;
42 
43     //mybatis plus 全局配置
44     @Bean(name = "globalConfig")
45     public GlobalConfiguration globalConfiguration()
46         log.info("初始化GlobalConfiguration");
47         GlobalConfiguration configuration=new GlobalConfiguration();
48         //主键策略
49         configuration.setRefresh(refreshMapper);
50         configuration.setIdType(idType);
51         //字段策略
52         configuration.setFieldStrategy(fieldStrategy);
53         //数据库大写 下划线转换
54         configuration.setCapitalMode(capitalMode);
55         return configuration;
56     
57     @Bean(name = "sqlSessionFactory")
58     public SqlSessionFactory createSqlSessionFactoryBean(@Qualifier(value = "globalConfig") GlobalConfiguration configuration) throws Exception
59         log.info("初始化SqlSessionFactory");
60         MybatisSqlSessionFactoryBean sqlSessionFactoryBean=new MybatisSqlSessionFactoryBean();
61         sqlSessionFactoryBean.setDataSource(dataSource);
62         Interceptor[] interceptor=new PaginationInterceptor();
63         sqlSessionFactoryBean.setPlugins(interceptor);
64         ResourcePatternResolver resolver=new PathMatchingResourcePatternResolver();
65         try
66             sqlSessionFactoryBean.setGlobalConfig(configuration);
67             sqlSessionFactoryBean.setMapperLocations(resolver.getResources(mapperLocations));
68             sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);
69             return sqlSessionFactoryBean.getObject();
70         catch (Exception e)
71             e.printStackTrace();
72         
73         return sqlSessionFactoryBean.getObject();
74     
75     @Bean(name = "transactionManager")
76     public DataSourceTransactionManager transactionManager()
77         log.info("初始化transactionManager");
78         return new DataSourceTransactionManager(dataSource);
79     
80 
81 
82 
83 
84 

 Druid对于性能检测的配置

 DruidStatFilter  

 

 1 package com.wsy.dcxt.config.dao;
 2 
 3 import com.alibaba.druid.support.http.WebStatFilter;
 4 
 5 import javax.servlet.annotation.WebFilter;
 6 import javax.servlet.annotation.WebInitParam;
 7 
 8 @WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*",
 9         initParams = 
10         @WebInitParam(name = "exclusions",
11                 value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*") )
12 public class DruidStatFilter extends WebStatFilter 
13 
14 

 DruidStatViewServlet

 1 package com.wsy.dcxt.config.dao;
 2 
 3 import com.alibaba.druid.support.http.StatViewServlet;
 4 
 5 import javax.servlet.annotation.WebInitParam;
 6 import javax.servlet.annotation.WebServlet;
 7 
 8 /**
 9  * Druid 的数据源状态监控
10  */
11 @WebServlet(urlPatterns = "/druid/*",
12                    initParams = 
13                           @WebInitParam(name = "allow",value = "127.0.0.1"),
14                            @WebInitParam(name = "deny",value = "192.168.1.3"),
15                            @WebInitParam(name ="loginUsername",value = "admin"),
16                            @WebInitParam(name = "loginPassword",value = "123456"),
17                            @WebInitParam(name = "resetEnable",value = "false")//禁止html页面上reset All功能
18                    )
19 public class DruidStatViewServlet extends StatViewServlet 
20     private static final long serialVersionUID = 1L;
21 

打开浏览器,输入配置allow的ip 用户名 密码 即可访问到性能检测面板

注: 记得在主类上添加

@ServletComponentScan 注解 不然会报404

 

对于传统的xml配置.测试了一个查看所有用户的方法

 1 package com.wsy.dcxt.dao;
 2 
 3 import com.wsy.dcxt.pojo.User;
 4 import com.baomidou.mybatisplus.mapper.BaseMapper;
 5 import org.apache.ibatis.annotations.Insert;
 6 
 7 import java.util.List;
 8 
 9 public interface UserMapper extends BaseMapper<User>
10 
11 
12     List<User> findAllUsers();
13 

介绍UserMapper.java和UserMapper.xml

 1 package com.wsy.dcxt.dao;
 2 
 3 import com.wsy.dcxt.pojo.User;
 4 import com.baomidou.mybatisplus.mapper.BaseMapper;
 5 import org.apache.ibatis.annotations.Insert;
 6 
 7 import java.util.List;
 8 
 9 public interface UserMapper extends BaseMapper<User>
10 
11 
12     List<User> findAllUsers();
13 

UserMapper.xml 记得统一 src/main/resouce/mapper (根据yml 文件的配置走)

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper
3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="com.wsy.dcxt.dao.UserMapper">
6     <select id="findAllUsers" resultType="user">
7         select * from user
8     </select>
9 </mapper>

最后贴出测试类,开森一会儿

 1 package com.wsy.dcxt.dao;
 2 
 3 import com.wsy.dcxt.pojo.User;
 4 import com.wsy.dcxt.service.UserService;
 5 import org.junit.Test;
 6 import org.junit.runner.RunWith;
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.boot.test.context.SpringBootTest;
 9 import org.springframework.test.context.junit4.SpringRunner;
10 
11 import java.util.List;
12 
13 import static org.junit.Assert.assertEquals;
14 
15 @SpringBootTest
16 @RunWith(SpringRunner.class)
17 public class TestUserMapper 
18     @Autowired
19     private UserMapper userMapper;
20     @Test
21    public void testMapper()
22        List<User> users = userMapper.findAllUsers();
23        assertEquals(3,users.size());
24 
25 
26     
27     @Test
28     public void insertUser()
29         User user =new User();
30         user.setPassword("123");
31         user.setUsername("90");
32         int result=userMapper.insert(user);
33         System.out.println(result);
34         
35     
36 

 

 好多次的InvalidBound 超级神奇 有这么几处需要切记!切记!

<1>,Mapper.java的方法和mapper.xml的方法是否匹配

<2>,namespace 是否填写正确

<3>,yml 中 读取mapper.xml的路径是否正确

<4>,mapperScan注释是否调用

 


springboot+mybatis+druid+pagehelper实现多数据源并分页

前言本篇文章主要讲述的是SpringBoot整合Mybatis、Druid和PageHelper并实现多数据源和分页。其中SpringBoot整合Mybatis这块,在之前的的一篇文章中已经讲述了,这里就不过多说明了。重点是讲述在多数据源下的如何配置使用Druid和PageHelpe... 查看详情

springboot--整合mybatis+druid(代码片段)

...,首先替换默认数据源为阿里德鲁伊并添加监控,其次是SpringBoot下使用Mybatis替换数据源为德鲁伊  首先在配置文件里配置好数据库连接的基本信息,如usernamepasswordurl等,重要的是把默认的type换成Druid。这样做数据源已经换成... 查看详情

springboot+mybatis+druid配置多数据源(mysql+postgre)

springboot+mybatis+Druid配置多数据源(mysql+postgre)引入pom依赖设置application多数据源config配置db1config配置(主数据库配置)db2config配置(其他数据库)事务处理mapper层springboot+mybatis+Druid配置多数据源(mysql+postgre)参考资料:第八章springboot+mybatis+... 查看详情

springboot整合mybatis

1、springboot配置数据库连接池druid2、springboot整合mybatis3、springboot整合pagehelper  springboot配置数据库连接池druid 新建springboot项目   相关pom依赖druid所需pom依赖 <dependency><groupId> 查看详情

springboot配置mysql,mybatis,druid

配置DRUID连接池MYSQL数据库MYBATIS持久层框架添加依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency> 查看详情

springboot入门之基于druid配置mybatis多数据源

...处理,这篇了解下使用基于基于Druid配置Mybatis多数据源。SpringBoot默认配置数据库连接信息时只需设置url等属性信息就可以了,SpringBoot就会基于约定根据配置信息实例化对象,但是一般大型的项目都是有多个子系统或者多个数据... 查看详情

springboot+mybatis+druid数据库连接池

参考博客https://blog.csdn.net/liuxiao723846/article/details/804560251、先在pom.xml中引入druid依赖包<!--连接池--><!--Druid数据连接池依赖--><dependency><groupId>com.alibaba</groupId><artifactI 查看详情

idea搭建springboot项目:springboot+mybatis+druid+mybatis-generator(代码片段)

今天第一次使用IDEA开发工具,搭建SpringBoot项目,记录下重点步骤。1、IDEA创建基于Maven管理的Java项目。2、pom.xml文件添加jar包依赖:SpringBoot版本、MyBatis、MySQL8驱动和AlibabaDruid数据库连接池。插件依赖:添加maven插... 查看详情

springboot+druid+mybatis-plus配置详解(代码片段)

网上找了很多关于springboot+druid+mybatis-Plus的配置,遇见的很多问题也没找到好的解决方案。折腾了好几天终于自己配置通过了。 springboot的pom文件1<parent>2<groupId>org.springframework.boot</groupId>3<artifactId>spring-boot-s 查看详情

shardingsphere多数据源(springboot+mybatis+shardingsphere+druid)

org.springframeword.boot:spring-boot-starer-web:2.0.4releaseio.shardingsphere:sharding-jdbc-spring-boot-starter:3.0.0M3org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1com.alibaba:druid-spring 查看详情

springboot2.0引入mybatis-plus-druid

pom 数据源配置 MybatisPlus配置  实体类 参考项目  查看详情

springboot---整合druid连接池---连接oracle数据库---整合mybatis---整合thymeleaf---日志配置

目录在新建的springboot项目pom文件中新添druid连接池的依赖在application.properties配置文件中添加配置配置静态文件目录和模板文件目录@(springboot---整合druid连接池---连接oracle数据库---整合mybatis---整合thymeleaf---日志配置)在新建的springb... 查看详情

springboot使用druid与mybatis-plus整合(代码片段)

SpringBoot使用Druid与Mybatis-plus整合需要导入的依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependenc 查看详情

springboot2+druid+mybatis多数据源配置(代码片段)

...案。读写分离会使用多数据源的使用。下面记录如何搭建SpringBoot2+Druid+Mybatis 多数据源配置以及在使用过程遇到的问题。一、先从pom.xml入手(使用springboot2的版本)<parent><groupId>org.springframework.boot&l 查看详情

springboot(12):集成druid

一、添加依赖<!--mybatis-开始--><dependency>   <groupId>org.mybatis.spring.boot</groupId>   <artifactId>mybatis-spring-boot-starter</artifactId> 查看详情

shirodemo:springboot+shiro+druid+mybatis(代码片段)

访问start.spring.io生成项目: 然后选择依赖: pom.xml:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi: 查看详情

springboot实战之mybatis、druid

...Mapper,为了后续单元测试验证,实现插入和查询操作创建SpringBoot主类创建单元测试测试逻辑:插入一条name=AAA,age=20的记录,然后根据name=AAA查询,并判断age是否为20测试结束回滚数据,保证测试单元每次运行的数据环境独立【... 查看详情

springboot1.5.4整合druid(十三)

上一篇:springboot1.5.4整合mybatis(十二) 1      集成druid连接池springboot集成druid项目mybatis-spring-boot源码地址:https://git.oschina.net/wyait/springboot1.5.4.git 1.1 druid简介D 查看详情