看了幾篇整合的博客,開始搭建javascript
新建一個maven(能夠直接選maven上面那個,快速構建一個spring項目,不過個人idea(16)給的(next後的頁面選項,不是本圖的jdk)jdk沒有1.7的選項,因此我就用maven構建了)css
構建後,pom.xmlhtml
<!-- 繼承父包 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 測試 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!-- mysql鏈接 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 熱部署--> <!--springloaded :實現修改類文件的熱部署--> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <!--頁面,代碼的熱部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <!--Mybatis-generator--> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </pluginManagement> </build>
梳理項目結構:前端
application.propertieshtml5
generatorConfig.xml(mybatis代碼生成器)java
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 出現錯誤:Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解決辦法:將本地的MAVEN倉庫中的mysql驅動引入進來 --> <classPathEntry location="C:\work\mavenFile\mysql\mysql-connector-java\5.1.30\mysql-connector-java-5.1.30.jar"/> <context id="mysqlgenerator" targetRuntime="MyBatis3Simple"> <!--不生成註釋--> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <!-- 配置數據庫鏈接 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/huahua" userId="lsl" password="123456" /> <!-- 指定javaBean生成的位置 --> <javaModelGenerator targetPackage="com.lsl.store.entity" targetProject="src/main/java" > <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認爲false --> <property name="enableSubPackages" value="true" /> <!-- 設置是否在getter方法中,對String類型字段調用trim()方法 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!--指定sql映射文件生成的位置 --> <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources" > <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 指定dao接口生成的位置,mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.lsl.store.mapper" targetProject="src/main/java" > <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 選擇一個table來生成相關文件,能夠有一個或多個table,必需要有table元素 選擇的table會生成一下文件: 1,SQL map文件 --> <table tableName="%" > <!-- 參考 javaModelGenerator 的 constructorBased屬性--> <property name="constructorBased" value="false"/> <!-- 默認爲false,若是設置爲true,在生成的SQL中,table名字不會加上catalog或schema; --> <property name="ignoreQualifiersAtRuntime" value="false"/> <!-- 參考 javaModelGenerator 的 immutable 屬性 --> <property name="immutable" value="false"/> <!-- 指定是否只生成domain類,若是設置爲true,只生成domain類,若是還配置了sqlMapGenerator,那麼在mapper XML文件中,只生成resultMap元素 --> <property name="modelOnly" value="false"/> <!-- 若是設置爲true,生成的model類會直接使用column自己的名字,而不會再使用駝峯命名方法,好比BORN_DATE,生成的屬性名字就是BORN_DATE,而不會是bornDate --> <property name="useActualColumnNames" value="false"/> </table> </context> </generatorConfiguration>
開始生成代碼(生成器插件在pom.xml):mysql
編寫代碼,測試:jquery
ok,整合成功,剩下的就是堆代碼,整合其它了。web
整合須知:spring
mybatis的映射文件必須放在resources內,不然報錯找不到。(多是xml嗎,能夠試試註解,
須要在啓動類添加@MapperScan (掃描mapper接口
idea自動編譯:setting-complier-auto.....
springboot熱部署:pom.xml裏有
嗯,暫時就折磨多!
繼續堆代碼之事務:
自動配置自動配置自動配置,(你也能夠本身搞,不過默認的已經夠用了,畢竟我的的的項目很小
1.自動配置事務管理器:
在使用JDBC做爲數據訪問技術時,(pom.xml本身看),springboot會咱們定義PlatformTransaction Manager的實現DataSourceTransactionManager的bean,
配置見源碼:jdbc.DataSourceTransactionManagerAutoConfiguration類中的定義。
在使用jpa,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,JpaTransactionManager的bean,
,,,,,jpa.JpaBaseConfiguration類中的定義
(本項目使用jdbc的事務管理器)
2.自動開啓註解事務的支持:
springboot專門用於配置事務的類:TransactionAutoConfiguration,該類依賴於上述兩個源碼類
在DataSourceTransactionManagerAutoConfiguration裏自動開啓了對聲明式事務的支持,因此jdbc(pom.xml),因此在啓動類無須顯示開啓使用@EnableTransactionManagement
因此使用jdbc的事務,啥都不用,(貌似使用jpa還需顯示開啓
因此測試下把:在serivce模擬移除刪除:
繼續在controller編寫響應的代碼,測試(不截圖了,懶,反正回滾了,反正沒刪掉,寫錯的話,不要打我啊
ok,事務這塊暫時就到這,之後有新發現再添加。
繼續堆代碼以前端: thymeleaf 和 layui
添加依賴(去掉web的依賴,由於thymeleaf包含了web
第二個依賴解決問題:
application.properties中:
#關閉模板緩存,更新頁面能夠及時得出
spring.thymeleaf.cache=false
#解決thymeleaf對html5檢查過嚴
spring.thymeleaf.mode=LEGACYHTML5
繼續完善項目結構
在自動配置類addResourceHandlers定義了靜態資源的配置
把類路徑下的/static /public /resources /META-INF/resources 文件下的靜態文件直接映射爲/**,能夠經過http://localhost:8080/**來訪問。
springboot經過.autoconfigure.thymeleaf包對thymeleaf進行自動配置:
經過包內的ThymeleafProperties來配置Thymeleaf,在application.properties中以spring.thymeleaf開頭來配置,經過源碼能夠獲得一些默認配置:
前綴:springboot默認的模板放置在: classpath:/templates/ 目錄下
後綴: .html 模板默認爲:html5 編碼爲:UTF-8 媒體類型:text/html 默認開啓緩存,(開發時須要關閉
以一個登錄爲例:
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>Title</title> <link rel="stylesheet" th:href="@{/layui/css/layui.css}"/> </head> <style> .login { margin: 150px auto; padding-top: 70px; width: 400px; height: 200px; background-color: white; } </style> <body style="background-color: #f2f2f2"> <form class="layui-form login" action="/user/login"> <div class="layui-form-item"> <label class="layui-form-label">用戶名</label> <div class="layui-input-inline"> <input type="text" name="name" required="required" lay-verify="required" placeholder="請輸入用戶名" autocomplete="off" class="layui-input"/> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">密碼框</label> <div class="layui-input-inline"> <input type="password" name="password" required="required" lay-verify="required" placeholder="請輸入密碼" autocomplete="off" class="layui-input"/> </div> <div class="layui-form-mid layui-word-aux">輔助文字</div> </div> <div class="layui-form-item btn-wei"> <div class="layui-input-block"> <button lay-submit="" lay-filter="login" class="layui-btn">登陸</button> </div> </div> </form> </body> <script th:src="@{/layui/js/jquery-1.12.4.js}" type="text/javascript"></script> <script th:src="@{/layui/js/layui.js}" type="text/javascript"></script> <script th:src="@{/layui/js/index.js}" type="text/javascript"></script> </html>
運行顯示爲:
其它的一些都採用自動配置,嗯,暫時就這些,等着繼續深刻回來添加相關的知識(寫的很差,不要說我,我很害羞的