springboot配置mybatis、druid

簡單地記錄一下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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章