springboot 整合 mybatis,thymeleaf

看了幾篇整合的博客,開始搭建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

第二個依賴解決問題:  

thymeleaf標籤必須由匹配的結束標記終止(thymeleaf對html5檢查過嚴)

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>

  運行顯示爲:

 

其它的一些都採用自動配置,嗯,暫時就這些,等着繼續深刻回來添加相關的知識(寫的很差,不要說我,我很害羞的

相關文章
相關標籤/搜索