簡單地記錄一下mybatis、druid在springboot中的配置,有時候記性不好容易搞忘,特別是新學的druid,記錄下來方便以後翻閱。
Mybatis
Mybatis就不用介紹了,直接上配置流程吧。
一、 引入Maven依賴
<!-- mysql連接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis依賴 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 分頁插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
二、 創建mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置全局屬性-->
<settings>
<!--使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值-->
<setting name="useGeneratedKeys" value="true"/>
<!--使用列標籤替換列別名 默認true-->
<setting name="useColumnLabel" value="true"/>
<!--開啓駝峯命名轉換-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--配置分頁插件-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
</plugin>
</plugins>
</configuration>
三、 創建entity和mapper
在resource目錄下創建mapper,對應dao的xml文件就放在這裏
UserDao.xml文件如下:
<!--頭部信息,確定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">
<!--此處是對應UserDao接口-->
<mapper namespace="org.sicau.iotworksexhibition.dao.UserDao">
<!--此處的Student對應POJO實體,id對應定義方法名-->
<select id="queryStudentList" resultType="org.sicau.iotworksexhibition.entity.POJO.Student">
select * from user_tb;
</select>
</mapper>
創建實體存放目錄,在源代碼存放目錄下創建entity包:
四、 配置application.yml文件
# mybatis 配置
mybatis:
mapper-locations: classpath:mapping/*.xml # 配置mapper路徑
type-aliases-package: org.sicau.iotworksexhibition.PO # 配置實體對象路徑,這樣在涉及到實體類寫sql語句的時候,可以不用寫包名
config-location: classpath:mybatis-config.xml # 配置配置文件路徑
五、 配置MapperScan
@SpringBootApplication
@MapperScan("org.sicau.iotworksexhibition.dao") //掃描mybatis的mapper
public class IotWorksExhibitionApplication {
public static void main(String[] args) {
SpringApplication.run(IotWorksExhibitionApplication.class, args);
}
}
六、配置數據源
可以用Spring推薦的DBCP,也可以用c3p0,但是這個是比較老的一個工具,而且各方面來說都快過時了,推薦使用阿里的druid。這裏記錄一下配置dbcp的application.yml配置(一般配置)
spring:
# 配置數據源
datasource:
url: jdbc:mysql://localhost:3306/iot_works_exhibition?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root # 數據庫用戶名
password: 123456 # 數據庫密碼
dbcp2:
default-auto-commit: false # 是否自動提交
tomcat:
max-wait: 60000 # 等待超時時間
druid
druid是阿里巴巴團隊開發的一個非常優秀的數據庫連接池,能提供強大的監控和拓展功能。官方地址:http://druid.io/
第一次配置這個還是折騰了很久,還是記錄一下吧,後面再慢慢學習。
一、 pom依賴
<!--阿里連接池druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
二、 application.yml配置
spring:
# 配置數據源
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/iot_works_exhibition?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
# 下面爲連接池的補充設置,應用到上面所有數據源中
# 初始化大小,最小,最大
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的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆
filters: stat,wall #,log4j
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
slowSqlMillis: 5000
# 合併多個DruidDataSource的監控數據
useGlobalDataSourceStat: true
三、 注入DruidDataSource
在config.dao目錄下創建DruidConfiguration.java
package org.sicau.iotworksexhibition.config.dao;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
/**
* @Author beifengtz
* @Date Created in 20:26 2018/9/21
* @Description:
*/
@Configuration
@Primary // 標記配置,優先實現
public class DruidConfiguration {
@Bean(name = "druidDataSource") // 此處最好設置bean名,如果是單數據源倒無所謂,但是如果是多數據源很有可能發生衝突,特別是spring內使用的dbcp容易與其發生衝突。
@ConfigurationProperties(prefix = "spring.datasource.druid") // 配置讀取哪一部分的配置
public DataSource druidConfiguration(){
return new DruidDataSource();
}
}
四、 配置DruidStatViewServlet
package org.sicau.iotworksexhibition.config.servlet;
import com.alibaba.druid.support.http.StatViewServlet;
import javax.servlet.Servlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
/**
* @Author beifengtz
* @Date Created in 20:31 2018/9/21
* @Description:
*/
@WebServlet(
urlPatterns= {"/druid/*"},
initParams= {
@WebInitParam(name="allow",value="127.0.0.1"),
@WebInitParam(name="loginUsername",value="root"),
@WebInitParam(name="loginPassword",value="123456"),
@WebInitParam(name="resetEnable",value="true")// 允許HTML頁面上的“Reset All”功能
}
)
public class DruidStatViewServlet extends StatViewServlet implements Servlet {
private static final long serialVersionUID = 1L;
}
五、 配置DruidStatFilter
package org.sicau.iotworksexhibition.config.filter;
import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
/**
* @Author beifengtz
* @Date Created in 20:29 2018/9/21
* @Description:
*/
@WebFilter(
filterName="druidWebStatFilter",
urlPatterns= {"/*"},
initParams= {
@WebInitParam(name="exclusions",value="*.js,*.jpg,*.png,*.gif,*.ico,*.css,/druid/*")//配置本過濾器放行的請求後綴
}
)
public class DruidStatFilter extends WebStatFilter {
}
六、 配置掃描
package org.sicau.iotworksexhibition;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan //druid用於掃描所有的Servlet、filter、listener+
@MapperScan("org.sicau.iotworksexhibition.dao") //掃描mybatis的mapper
public class IotWorksExhibitionApplication {
public static void main(String[] args) {
SpringApplication.run(IotWorksExhibitionApplication.class, args);
}
}
當我們以上配置完了就可以看效果了,我覺得druid最強大的一點就在於數據庫的監控,我們啓動項目,並訪問http://localhost:8080/druid/login.html,會出現下面的頁面,我們使用DruidStatViewServlet處配置的用戶名密碼登錄進入。
然後我們就可以使用它強大的監聽功能了
我的個人博客地址:blog.beifengtz.com