Springboot整合mybatis通用mapper以及Druid数据源
版本springboot 2.1.1
pom.xml引入的依赖
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--通用Mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
<!--pageHelper分页-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--mybatis通用mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.3</version>
</dependency>
对应application.properties
#mybatis&&通用Mapper
mybatis.type-aliases-package=com.jie.entity
mybatis.mapper-locations=classpath:mapper/*.xml
mapper.mappers=com.jie.utils.MyMapper
mapper.identity=MYSQL
#分页插件
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
#log
logging.file=logger.log
logging.level.*=debug
#数据库Start----------------------------数据库Start
#数据库
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/jie
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#连接池配置
druid:
#初始化大小、最小空闲、最大**
initial-size: 5
min-idle: 5
max-active: 20
#配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
# 合并多个DruidDataSource的监控数据
use-global-data-source-stat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#数据库end----------------------------数据库end
- 一,数据源配置
- 1.druid bean配置 请放在springboot启动类所在的目录下
package com.jie.jspringboot;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
@SpringBootApplication
@ServletComponentScan//这行是为了避免扫描不到Druid的Servlet
public class DruidApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(DruidApplication.class, args);
}
/**
*
* 其实大家主要关心下面的就好
* */
@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource druidDataSource() { return new DruidDataSource(); }
}
- 2.过滤器配置
package com.jie.filter;
import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
/**
* 配置监控拦截器
* druid监控拦截器
* @ClassName: DruidStatFilter
* @author wsj
* @date 2018年12月27日16:31:40
*/
@WebFilter(filterName="druidWebStatFilter",
urlPatterns="/*",
initParams={
@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"),// 忽略资源
})
public class DruidStatFilter extends WebStatFilter {
}
- 3.监控视图配置 请放在springboot启动类所在的目录下
package com.jie.jspringboot;
import com.alibaba.druid.support.http.StatViewServlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
/**
* druid监控视图配置
* @ClassName: DruidStatViewServlet
* @author jie
* @date 2018年12月27日16:42:24
*/
@WebServlet(urlPatterns = "/druid/*", initParams={
@WebInitParam(name="allow",value=""),// IP白名单 (没有配置或者为空,则允许所有访问)
@WebInitParam(name="deny",value="192.168.16.111"),// IP黑名单 (存在共同时,deny优先于allow)
@WebInitParam(name="loginUsername",value="admin"),// 用户名
@WebInitParam(name="loginPassword",value="admin"),// 密码
@WebInitParam(name="resetEnable",value="true")// 禁用HTML页面上的“Reset All”功能
})
public class DruidStatViewServlet extends StatViewServlet{
private static final long serialVersionUID = -7393144981692859541L;
}
- 4.启动 测试 完成
二.通用mapper配置
写一个mapper继承通用mapper,以后其他只需要继承这个就可以了,该mapper不要被扫描到
请在启动类上加上要扫描的目标包@MapperScan(basePackages = {"com.jie.mapper"})
package com.jie.utils;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
/**
* 通用Mapper
* @param <T>
*/
public interface MyMapper<T> extends Mapper<T>,MySqlMapper<T> {
}
附一张目录树
参考博客1:https://blog.csdn.net/ajlzhu/article/details/81009845
参考博客2:https://blog.csdn.net/CoffeeAndIce/article/details/78707819