准备工作
1、导包
<dependencies>
<!--Web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis-plus-->
<!--mybatis-plus是自己开发的,并非官方的-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!--非官方: mybatis-spring-boot-starter-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<!--Druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
<!--Druid会使用log4j的日志记录,使用导入依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.11</version>
</dependency>
<!--JDBC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--MySQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--oracle-->
<!-- <dependency>-->
<!-- <groupId>com.oracle</groupId>-->
<!-- <artifactId>ojdbc6</artifactId>-->
<!-- <version>11.2.0.1.0</version>-->
<!-- </dependency>-->
<!--mybatis-plus-generator 生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<!-- freemarker,作为代码生成器mapper文件的模板引擎使用(当然也可以使用velocity,二选一即可) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- 约定大于配置,我们不要让Spring启动的时候过滤掉xml文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>项目名</finalName>
</build>
2、全部的配置文件(配置JDBC、Druid、MP)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=true&allowMultiQueries=true
# Oracle配置
#url: jdbc:oracle:thin:@127.0.0.1:1521:test
#username: root
#password: 123456
#driver-class-name: oracle.jdbc.driver.OracleDriver
# 配置druid数据源
type: com.alibaba.druid.pool.DruidDataSource
# druid 配置
druid:
# 打开我们的内置监控页面,打开后我们才可以有相应的web界面
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: user
login-password: 123456
# 打开我们的内置监控功能,打开之后我们才可以对我们的操作进行统计
filter:
stat:
enabled: true
slow-sql-millis: 2000
# 配置防火墙,防止sql语句注入,我们可以设置我们想要那些语句可以执行,哪些不行
wall:
enabled: true
config:
delete-allow: true
# select-all-column-allow: false,如果我们设置了拒绝查询,那么我们查询时就会报错,返回一个whitePage
# selelct-allow: false
# 打开我们的Web关联监控配置,即我们对某些路径进行精确统计
web-stat-filter:
enabled: true
# 初始化时建立的物理连接数。初始化发生在显式调用init方法,或者第一次getConnection时.
initial-size: 5
# 连接池最大物理连接数量。
max-active: 50
# 连接池最小物理连接数量。
min-idle: 5
# 获取连接时最大等待时间,单位为毫秒。
# 配置之后,缺省启用公平锁,并发效率会有所下降,若需要可以通过配置useUnfairLock属性为true使用非公平锁。
max-wait: 6000
# 是否缓存preparedStatement,也就是PSCache。
# PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
pool-prepared-statements: true
# 要启用PSCache,其值必须大于0,当大于0时,poolPreparedStatements自动触发修改为true。
# 在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100。
max-pool-prepared-statement-per-connection-size: 20
# 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。
# 如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
validation-query: select 1 from dual
# 检测连接是否有效的超时时间,单位为秒。
# 底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法。
# validation-query-timeout: 30
# 有两个含义:
# 1) Destroy线程会检测连接的间隔时间,若连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
# 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明。
time-between-eviction-runs-millis: 60000
# 连接保持空闲而不被驱逐的最长时间。
min-evictable-idle-time-millis: 300000
# 建议配置为true,不影响性能,并且保证安全性。
# 申请连接的时候检测,若空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
test-while-idle: true
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-on-borrow: false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-on-return: false
# 类型是字符串,通过别名的方式配置扩展的拦截器插件,常用的拦截器插件有:
# 监控统计用的filter:stat,日志用的filter:log4j,防御sql注入攻击的filter:wall,三个同时配置的化,用逗号隔开。
# 注意,Druid中的filter-class-names配置项是不起作用的,必须采用filters配置项才可以。
filters: stat,wall,log4j2
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录。
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
use-global-data-source-stat: true
# 整合mybatis 下面使用MP也可以配置映射的文件
# mybatis:
# mapper-locations:
# - classpath:com/zhao/mapper/*.xml
mybatis-plus:
configuration:
# 更新字段的时候设置为null,忽略实体null判断之后,解决Oracle无效的列异常, oracle数据库必须配置
jdbc-type-for-null: 'null' # 注意要有单引号
# mybatis-plus驼峰映射
map-underscore-to-camel-case: true
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# mybatis的xml文件地址,如果启动文件找不到xml文件,如下去修改pom.xml文件
mapper-locations: classpath:mybatis/mapper/*.xml
global-config:
# 禁用mybatis-plus的LOGO
banner: false
db-config:
# 逻辑未删除值,(逻辑删除下有效)
logic-delete-value: 1
# 逻辑未删除值,(逻辑删除下有效)需要注入逻辑策略LogicSqlInjector,以@Bean方式注入
logic-not-delete-value: 0
# 对应实体类的字段,写了这个在实体类中就不需要写注解了
logic-delete-field: deleted
使用YAML配置MP
Oracle
和MySQL
通用
# 整合mybatis 下面使用MP也可以配置映射的文件
# mybatis:
# mapper-locations:
# - classpath:com/zhao/mapper/*.xml
mybatis-plus:
configuration:
# 更新字段的时候设置为null,忽略实体null判断之后,解决Oracle无效的列异常, oracle数据库必须配置
jdbc-type-for-null: 'null' # 注意要有单引号
# mybatis-plus驼峰映射
map-underscore-to-camel-case: true
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# mybatis的xml文件地址,如果启动文件找不到xml文件,如下去修改pom.xml文件
mapper-locations: classpath:mybatis/mapper/*.xml
global-config:
# 禁用mybatis-plus的LOGO
banner: false
db-config:
# 逻辑未删除值,(逻辑删除下有效)
logic-delete-value: 1
# 逻辑未删除值,(逻辑删除下有效)需要注入逻辑策略LogicSqlInjector,以@Bean方式注入
logic-not-delete-value: 0
# 对应实体类的字段,写了这个在实体类中就不需要写注解了
logic-delete-field: deleted
使用Properties配置MP
# mybatis的xml文件地址,如果启动文件找不到xml文件,如下去修改pom.xml文件
mybatis-plus.mapper-locations= classpath:mybatis/mapper/*.xml
# 禁用mybatis-plus的LOGO
mybatis-plus.global-config.banner=false
# mybatis-plus驼峰映射
mybatis-plus.configuration.map-underscore-to-camel-case = true
# 更新字段的时候设置为null,忽略实体null判断之后,解决Oracle无效的列异常, oracle数据库必须配置,没有引号
mybatis-plus.configuration.jdbc-type-for-null=null
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
pom.xml解决找不到xml文件的配置
<build>
<!-- 约定大于配置,我们不要让Spring启动的时候过滤掉xml文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>