最近自己寫了一個SpringBoot+Mybatis(generator)+druid的demo
1. mybatis+generator逆向工程生成代碼
1. pom文件
pom文件添加如下內容,引入generator插件
org.mybatis.generator mybatis-generator-maven-plugin 1.3.5 mysql mysql-connector-java 5.1.35org.mybatis.generator mybatis-generator-core 1.3.5Generate MyBatis Artifactspackagegenerate > 這里是引用 truetruesrc/main/resources/generator/generatorConfig.xml
當pom引入此插件成功的話,idea右側可以看到
2. 在resources下新建generator文件夾,在generator下新建generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
3. 運行插件
4. 生成以下代碼
2. application.perperties中的配置
1. mybatis的配置
# mybatis實體類的包路徑mybatis.typeAliasesPackage=com.qlu.cloud.pojo# mybatis的dao層方法的實現xmlmybatis.mapper-locations: classpath:mapper/*.xml
2. druid的配置
# 連接數據庫的設置,SpringBoot會自動掃描這些# 連接數據庫的驅動名字,自6.x版本就換了名字spring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/hadoop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=falsespring.datasource.username = rootspring.datasource.password = root# 初始化時建立物理連接的個數spring.datasource.druid.initial-size=5# 最大連接池數量spring.datasource.druid.max-active=30# 最小連接池數量spring.datasource.druid.min-idle=5# 獲取連接時最大等待時間,單位毫秒spring.datasource.druid.max-wait=60000# 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒spring.datasource.druid.time-between-eviction-runs-millis=60000# 連接保持空閑而不被驅逐的最小時間spring.datasource.druid.min-evictable-idle-time-millis=300000# 用來檢測連接是否有效的sql,要求是一個查詢語句spring.datasource.druid.validation-query=SELECT 1 FROM DUAL# 建議配置為true,不影響性能,并且保證安全性。申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。spring.datasource.druid.test-while-idle=true# 申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。spring.datasource.druid.test-on-borrow=false# 歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。spring.datasource.druid.test-on-return=false# 是否緩存preparedStatement,也就是PSCache。PSCache對支持游標的數據庫性能提升巨大,比如說oracle。在mysql下建議關閉。spring.datasource.druid.pool-prepared-statements=true# 要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true。spring.datasource.druid.max-pool-prepared-statement-per-connection-size=50# 配置監控統計攔截的filters,去掉后監控界面sql無法統計spring.datasource.druid.filters=stat,wall# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500# 合并多個DruidDataSource的監控數據spring.datasource.druid.use-global-data-source-stat=true# druid連接池監控spring.datasource.druid.stat-view-servlet.login-username=adminspring.datasource.druid.stat-view-servlet.login-password=123# 排除一些靜態資源,以提高效率spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
3. thymeleaf的配置
thymeleaf 是新一代的模板引擎,在spring4.0中推薦使用thymeleaf來做前端模板引擎。它可以完全替代 JSP 。
thymeleaf的使用
application.propertites中的配置
spring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTMLspring.thymeleaf.encoding=utf-8spring.thymeleaf.cache=false
pom文件中
org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-thymeleaf
== thymeleaf下的return “start”;即為跳轉到start.html界面,前提是這個文件在配置文件下配置的/templates/下,他的意思是動態。==
3. 執行
接下來就可以寫controller層來執行函數了
package com.qlu.cloud.controller;import com.qlu.cloud.mapper.UserMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("a")public class demoController { /** * auto scan配置 * 在編輯情況下,無法找不到對應的bean * 于是提示找不到對應bean的錯誤。 * 常見于mybatis的mapper * * 解決辦法:降低Autowired檢測的級別,將Severity的級別由之前的error改成warning或其它可以忽略的級別。 */ @Autowired private UserMapper userMapper; @RequestMapping("show") public String show(Model model){ model.addAttribute("info",userMapper.selectByPrimaryKey(1)); return "start"; }}
其實controller層的注解我是采用了之前SSM框架的寫法,其實這里有一個注解@RestController,它=@Controller+@ResponseBody,表示返回的是json
這里我們用model返回了一個類,然后跳轉到了start.html界面,在start.html界面展示數據start.html在/templates/下,它的內容為
Title
序號 風機編號 報警時間 30s內溫度高于80度次數 最最重要的一點
因為之前在寫Mapper的時候(也就是DAO層是生成的,生成的Mapper類中沒有使用@Mapper注解,但是每個Mapper中的類要加一個@Mapper注解也很麻煩),所以我們要在啟動類上加一個@MapperScan(“com.qlu.cloud.mapper”)來聲明@Mapper所在的包即可,啟動類一般叫項目名+Application
然后運行項目即可。
實用插件
devtools熱部署
每次改完都要重新停止應用,再重新啟動很煩~但springboot有個叫熱部署的東西,就是說在項目中修改代碼可以不用重新停止應用再重新啟動,可以自動重啟,這里我們用的是devtools
1. pom文件中添加以下內容
org.springframework.boot spring-boot-devtools providedtrue
2. 勾選setting->Build,Execution,Deployment->Compiler->Build project automatically
3. Ctrl+Shift+Alt+/ -> 選擇Registry… -> 勾選compiler.automake.allow.when.app.running
4. 重啟項目即可
最后附上完整的pom文件
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASEcom.qlu cloud 0.0.1-SNAPSHOTcloudDemo project for Spring Boot1.8com.alibaba fastjson 1.2.6org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2org.springframework.boot spring-boot-starter-test testorg.springframework.boot spring-boot-devtools providedtrueorg.mybatis mybatis 3.4.6org.mybatis.spring.boot mybatis-spring-boot-starter 1.2.0mysql mysql-connector-java org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-thymeleaf com.alibaba druid-spring-boot-starter 1.1.9org.springframework.boot spring-boot-maven-plugin org.mybatis.generator mybatis-generator-maven-plugin 1.3.5 mysql mysql-connector-java 5.1.35org.mybatis.generator mybatis-generator-core 1.3.5Generate MyBatis Artifactspackagegeneratetruetruesrc/main/resources/generator/generatorConfig.xml