2020.09 問題總結(Oracle-->MySQL、Maven、JSP-->Thymeleaf、Druid)

凌丹妙耀發表於2020-10-02

2020.09 問題總結(Oracle-->MySQL、Maven、JSP-->Thymeleaf、Druid)

資料庫建表

Oracle 轉 MySQL 問題

Oracle MySQL
可變字元 varchar2 varchar
自增id default SYS_GUID() CREATE TRIGGER product_before_insert BEFORE INSERT ON product FOR EACH ROW
BEGIN
IF new.id is NULL THEN
SET new.id = UUID();
END IF;
END;
字串轉timestamp to_timestamp('10-10-2018 10:10:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), TIMESTAMP('2018-12-25 10:18:00.000000')

Maven模組化構建工程

The POM for com.food:food-manager-pojo:jar:0.0.1-SNAPSHOOT is missing, no dependency informat

搭建完所有子工程後,在Maven父工程處,點選install完成工程構建:

image-202009251jgfhfghfghg53110095

Thymeleaf 替換 JSP

超連結及靜態資源使用:

<!-- 超連結: -->
<a th:href="@{/pages/main}">
<!--靜態資源: -->
<img th:src="@{/img/center.jpg}">

重用模板片段:

image-20200925154240878

提取模板片段作為單個頁面(不同於JSP不提取也是可以的)

<html xmlns:th="http://www.thymeleaf.org">

<!-- 頁面頭部 -->
<header class="main-header" th:fragment="header">
    ...
    </header>
</html>
<html xmlns:th="http://www.thymeleaf.org">
    <!-- 導航側欄 -->
<aside class="main-sidebar" th:fragment="aside">
    ...
    </aside>
</html>

需要使用模板片段的,

  • 採用th:insert的方法
<!-- 頁面頭部 -->
		<div th:insert="~{pages/header.html::header}"></div>
			<!-- 頁面頭部 /-->

		<!-- 導航側欄 -->
		<div th:insert="~{pages/aside.html::aside}"></div>
  • 還可以使用th:replaceth:include屬性插入。

image-20200925183319097

文字輸入

<span th:text="This is prototype text002.">This is prototype text.</span>

使用變數

<span th:text="${userName}">This is prototype text.</span>

迭代器

image-20200927191513411

整合 Druid 資料來源

SQL監控和SQL防火牆無資訊原因及解決方法

原因:

沒有開啟Filterstatwall)配置。

以下開啟方法將會開啟失敗:

datasource:
    ...
    # 配置監控統計攔截的filters,去掉後監控介面sql無法統計,
    #'wall'用於防火牆
    filters: stat,wall

解決辦法:

druid:
      filter:
        stat:
          enabled: true
        wall:
          enabled: true

開啟後在資料來源filter類名中可以檢視到statwall的類名。(未開啟之前是為空的)

image-20200925194904326

具體配置如下:

spring:
  datasource:
   # driver-class-name: com.mysql.cj.jdbc.Driver   #
    type: com.alibaba.druid.pool.DruidDataSource

    druid:
      url: jdbc:mysql://localhost:3306/tams_bg?serverTimezone=UTC
      username: root
      password: 123456
      # 配置監控統計攔截的filters,去掉後監控介面sql無法統計,
      #'wall'用於防火牆
      filter:
        stat:
          enabled: true
        wall:
          enabled: true
      # 配置StatFilter
      web-stat-filter:
        #預設為false,設定為true啟動
        enabled: true
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      #配置StatViewServlet
      stat-view-servlet:
        url-pattern: "/druid/*"
        #允許那些ip
        login-username: tom001
        login-password: 1234
        #禁止那些ip
        deny: 192.168.1.102
        #是否可以重置
        reset-enable: true
        #啟用
        enabled: true
      #最大等待時間,配置獲取連線等待超時,時間單位都是毫秒ms
      max-wait: 60000
      #最大值
      max-active: 20
      #最小值
      min-idle: 5
      #初始化大小
      initial-size: 5
      #配置一個連線在池中最小生存的時間
      min-evictable-idle-time-millis: 60000
      #配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線
      time-between-eviction-runs-millis: 300000
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      pool-prepared-statements: true
      #最大PSCache連線
      max-pool-prepared-statement-per-connection-size: 20
      use-global-data-source-stat: true
      # 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500


mybatis:
  type-aliases-package: com.justgo.tams_bg_pojo

相關文章