javascript
springboot 引入jdbc驱动_SpringBoot+MyBatis+Druid整合demo
最近自己寫(xiě)了一個(gè)SpringBoot+Mybatis(generator)+druid的demo
1. mybatis+generator逆向工程生成代碼
1. pom文件
pom文件添加如下內(nèi)容,引入generator插件
<!-- mybatis代碼生成插件 --><!--如果使用的mysql驅(qū)動(dòng)是6.x的,那就無(wú)法生成除Insert以外的方法,使用5.x版本的就可以生成。 --><!--生成的mapper中有insert以外的方法就得用5.x版本的MySQL --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><dependency><groupId> mysql</groupId><artifactId> mysql-connector-java</artifactId><version>5.1.35</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency></dependencies><executions><execution><id>Generate MyBatis Artifacts</id><phase>package</phase><goals><goal>generate</goal></goals></execution></executions><configuration><!--允許移動(dòng)生成的文件 -->> 這里是引用 <verbose>true</verbose><!-- 是否覆蓋 --><overwrite>true</overwrite><!-- 配置文件在的位置 --><configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile></configuration></plugin>當(dāng)pom引入此插件成功的話,idea右側(cè)可以看到
2. 在resources下新建generator文件夾,在generator下新建generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration><!--導(dǎo)入屬性配置 jdbc配置文件--><properties resource="db.properties"></properties><context id="DB2Tables" targetRuntime="MyBatis3"><!-- 對(duì)于生成的pojo類(lèi),添加toString方法 --><plugin type="org.mybatis.generator.plugins.ToStringPlugin" /><commentGenerator><property name="suppressDate" value="true"/><!-- 配置生成注釋,默認(rèn)注釋已經(jīng)修改--><property name="suppressAllComments" value="true"/><!-- 設(shè)置編碼為UTF-8 --><property name="javaFileEncoding" value="UTF-8" /></commentGenerator><!--數(shù)據(jù)庫(kù)鏈接地址賬號(hào)密碼--><jdbcConnection driverClass="${jdbc.driverClassName}" connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"></jdbcConnection><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!--生成Model類(lèi)存放位置--><javaModelGenerator targetPackage="com.qlu.cloud.pojo" targetProject="src/main/java"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/></javaModelGenerator><!--生成映射文件存放位置--><sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!--生成Dao類(lèi)存放位置--><!--客戶端代碼,生成易于使用的針對(duì)Model對(duì)象和XML配置文件 的代碼type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對(duì)象type="MIXEDMAPPER",生成基于注解的Java Model 和相應(yīng)的Mapper對(duì)象type="XMLMAPPER",生成SQLMap XML文件和獨(dú)立的Mapper接口--><javaClientGenerator type="XMLMAPPER" targetPackage="com.qlu.cloud.mapper" targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!-- 手動(dòng)設(shè)置數(shù)據(jù)庫(kù)表,根據(jù)數(shù)據(jù)庫(kù)表來(lái)生成對(duì)應(yīng)的pojo、mapper --><table tableName="dir" domainObjectName="Directory" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table><table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table><table tableName="recode" domainObjectName="Recode" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table><table tableName="file" domainObjectName="File" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table></context> </generatorConfiguration>3. 運(yùn)行插件
4. 生成以下代碼
2. application.perperties中的配置
1. mybatis的配置
# mybatis實(shí)體類(lèi)的包路徑 mybatis.typeAliasesPackage=com.qlu.cloud.pojo # mybatis的dao層方法的實(shí)現(xiàn)xml mybatis.mapper-locations: classpath:mapper/*.xml2. druid的配置
# 連接數(shù)據(jù)庫(kù)的設(shè)置,SpringBoot會(huì)自動(dòng)掃描這些 # 連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng)名字,自6.x版本就換了名字 spring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/hadoop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false spring.datasource.username = rootspring.datasource.password = root# 初始化時(shí)建立物理連接的個(gè)數(shù)spring.datasource.druid.initial-size=5 # 最大連接池?cái)?shù)量spring.datasource.druid.max-active=30 # 最小連接池?cái)?shù)量spring.datasource.druid.min-idle=5 # 獲取連接時(shí)最大等待時(shí)間,單位毫秒spring.datasource.druid.max-wait=60000 # 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒spring.datasource.druid.time-between-eviction-runs-millis=60000 # 連接保持空閑而不被驅(qū)逐的最小時(shí)間spring.datasource.druid.min-evictable-idle-time-millis=300000 # 用來(lái)檢測(cè)連接是否有效的sql,要求是一個(gè)查詢語(yǔ)句spring.datasource.druid.validation-query=SELECT 1 FROM DUAL # 建議配置為true,不影響性能,并且保證安全性。申請(qǐng)連接的時(shí)候檢測(cè),如果空閑時(shí)間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測(cè)連接是否有效。 spring.datasource.druid.test-while-idle=true # 申請(qǐng)連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能。spring.datasource.druid.test-on-borrow=false # 歸還連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能。spring.datasource.druid.test-on-return=false # 是否緩存preparedStatement,也就是PSCache。PSCache對(duì)支持游標(biāo)的數(shù)據(jù)庫(kù)性能提升巨大,比如說(shuō)oracle。在mysql下建議關(guān)閉。spring.datasource.druid.pool-prepared-statements=true # 要啟用PSCache,必須配置大于0,當(dāng)大于0時(shí),poolPreparedStatements自動(dòng)觸發(fā)修改為true。 spring.datasource.druid.max-pool-prepared-statement-per-connection-size=50 # 配置監(jiān)控統(tǒng)計(jì)攔截的filters,去掉后監(jiān)控界面sql無(wú)法統(tǒng)計(jì)spring.datasource.druid.filters=stat,wall# 通過(guò)connectProperties屬性來(lái)打開(kāi)mergeSql功能;慢SQL記錄spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 # 合并多個(gè)DruidDataSource的監(jiān)控?cái)?shù)據(jù)spring.datasource.druid.use-global-data-source-stat=true # druid連接池監(jiān)控spring.datasource.druid.stat-view-servlet.login-username=adminspring.datasource.druid.stat-view-servlet.login-password=123 # 排除一些靜態(tài)資源,以提高效率spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*3. thymeleaf的配置
thymeleaf 是新一代的模板引擎,在spring4.0中推薦使用thymeleaf來(lái)做前端模板引擎。它可以完全替代 JSP 。
thymeleaf的使用
application.propertites中的配置
spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTMLspring.thymeleaf.encoding=utf-8 spring.thymeleaf.cache=falsepom文件中
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- 頁(yè)面跳轉(zhuǎn)--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>== thymeleaf下的return “start”;即為跳轉(zhuǎn)到start.html界面,前提是這個(gè)文件在配置文件下配置的/templates/下,他的意思是動(dòng)態(tài)。==
3. 執(zhí)行
接下來(lái)就可以寫(xiě)controller層來(lái)執(zhí)行函數(shù)了
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配置* 在編輯情況下,無(wú)法找不到對(duì)應(yīng)的bean* 于是提示找不到對(duì)應(yīng)bean的錯(cuò)誤。* 常見(jiàn)于mybatis的mapper** 解決辦法:降低Autowired檢測(cè)的級(jí)別,將Severity的級(jí)別由之前的error改成warning或其它可以忽略的級(jí)別。*/@Autowiredprivate UserMapper userMapper; @RequestMapping("show")public String show(Model model){ model.addAttribute("info",userMapper.selectByPrimaryKey(1));return "start";}}其實(shí)controller層的注解我是采用了之前SSM框架的寫(xiě)法,其實(shí)這里有一個(gè)注解@RestController,它=@Controller+@ResponseBody,表示返回的是json
這里我們用model返回了一個(gè)類(lèi),然后跳轉(zhuǎn)到了start.html界面,在start.html界面展示數(shù)據(jù)start.html在/templates/下,它的內(nèi)容為
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <table border="2" align="center"><!--使用IDE集成thymeleaf 時(shí),在IDE中總是顯示紅色的波浪線看著就快有強(qiáng)迫癥了,于是打算解決一下。主要是IDE的檢查,不支持那些標(biāo)簽。第一種,加注釋解決第二種:setting關(guān)閉inspections的檢查打開(kāi)IDE的file->setting->左上角搜索inspections然后在右邊的搜索欄輸入thy,將Expression variables validation的√去掉,然后點(diǎn)擊確定。--><tr><td>序號(hào)</td><td>風(fēng)機(jī)編號(hào)</td><td>報(bào)警時(shí)間</td><td>30s內(nèi)溫度高于80度次數(shù)</td></tr><!--/*@thymesVar id="info" type="com.qlu.cloud.pojo.User"*/--><tr th:each ="i:${info}"><td th:text = "${i.userId}"></td><td th:text = "${i.userPass}"></td><td th:text = "${i.userMail}"></td><td th:text = "${i.displayName}"></td></tr> </table> </body> </html> 最最重要的一點(diǎn)因?yàn)橹霸趯?xiě)Mapper的時(shí)候(也就是DAO層是生成的,生成的Mapper類(lèi)中沒(méi)有使用@Mapper注解,但是每個(gè)Mapper中的類(lèi)要加一個(gè)@Mapper注解也很麻煩),所以我們要在啟動(dòng)類(lèi)上加一個(gè)@MapperScan(“com.qlu.cloud.mapper”)來(lái)聲明@Mapper所在的包即可,啟動(dòng)類(lèi)一般叫項(xiàng)目名+Application
然后運(yùn)行項(xiàng)目即可。
實(shí)用插件
devtools熱部署
每次改完都要重新停止應(yīng)用,再重新啟動(dòng)很煩~但springboot有個(gè)叫熱部署的東西,就是說(shuō)在項(xiàng)目中修改代碼可以不用重新停止應(yīng)用再重新啟動(dòng),可以自動(dòng)重啟,這里我們用的是devtools
1. pom文件中添加以下內(nèi)容
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>provided</scope><optional>true</optional></dependency>2. 勾選setting->Build,Execution,Deployment->Compiler->Build project automatically
3. Ctrl+Shift+Alt+/ -> 選擇Registry… -> 勾選compiler.automake.allow.when.app.running
4. 重啟項(xiàng)目即可
最后附上完整的pom文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--添加“parent”標(biāo)簽里的內(nèi)容后“spring-boot-starter-parent”會(huì)為開(kāi)發(fā)者提供常用jar的版本管理所以我們不需要指定版本,使用人家提供好的就可以了。當(dāng)然,指定也是可以的,這會(huì)覆蓋官方默認(rèn)的版本,不推薦。--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.qlu</groupId><artifactId>cloud</artifactId><version>0.0.1-SNAPSHOT</version><name>cloud</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.6</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 每次改完都要重新停止應(yīng)用,再重新啟動(dòng)很煩~但springboot有個(gè)叫熱部署的東西,就是說(shuō)在項(xiàng)目中修改代碼可以不用重新停止應(yīng)用再重新啟動(dòng),可以自動(dòng)重啟,這里我們用的是devtools--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>provided</scope><optional>true</optional></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.2.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- 頁(yè)面跳轉(zhuǎn)--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- druid數(shù)據(jù)庫(kù)連接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version></dependency></dependencies><build><plugins><!-- Spring Boot包含一個(gè)Maven插件,可以將項(xiàng)目打包為可執(zhí)行jar。--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- mybatis代碼生成插件 --><!--MG的插件--><!--如果使用的mysql驅(qū)動(dòng)是6.x的,那就無(wú)法生成,使用5.x版本的就可以生成。 --><!--生成的mapper中有insert以外的方法就得用5.x版本的MySQL --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><dependency><groupId> mysql</groupId><artifactId> mysql-connector-java</artifactId><version>5.1.35</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency></dependencies><executions><execution><id>Generate MyBatis Artifacts</id><phase>package</phase><goals><goal>generate</goal></goals></execution></executions><configuration><!--允許移動(dòng)生成的文件 --><verbose>true</verbose><!-- 是否覆蓋 --><overwrite>true</overwrite><!-- 自動(dòng)生成的配置 --><configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile></configuration></plugin></plugins></build> </project>總結(jié)
以上是生活随笔為你收集整理的springboot 引入jdbc驱动_SpringBoot+MyBatis+Druid整合demo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux可以对目录进行硬链接,Linu
- 下一篇: gradle idea java ssm