springboot配置mybatis、druid
阿新 • • 發佈:2018-12-11
簡單地記錄一下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處配置的使用者名稱密碼登入進入。
然後我們就可以使用它強大的監聽功能了