1. 程式人生 > >使用idea 搭建一個 SpringBoot + Mybatis + logback 的maven 專案

使用idea 搭建一個 SpringBoot + Mybatis + logback 的maven 專案

在這裡插入圖片描述
在這裡插入圖片描述

注意專案名不能大寫,把專案型別換成War型別。

在這裡插入圖片描述
在這裡插入圖片描述

使用 mybatis-generator 外掛 生成 實體類 和 介面

在 resources 目錄 中 新建一個 generatorConfig.xml 的檔案

generatorConfig.xml 檔案資訊

<?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>
    <context id="default" targetRuntime="MyBatis3Simple">
        <!--建立class時,對註釋進行控制-->
        <commentGenerator>
            <property name="suppressDate" value="true" />
            <!--去除註釋-->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--jdbc的資料庫連線-->
        <jdbcConnection driverClass="org.mariadb.jdbc.Driver"
                        connectionURL="jdbc:mariadb://localhost:3306/test"
                        userId="oukele" password="oukele">
        </jdbcConnection>
        <!-- Model模型生成器
            targetPackage -> 指定生成的model生成所在的包名
            targetProject -> 指定在該專案下所在的路徑
        -->
        <javaModelGenerator targetPackage="com.oukele.myspringbootproject.entity" targetProject="src/main/java">
            <!-- 是否對類CHAR型別的列的資料進行trim操作 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!--Mapper對映檔案生成所在的目錄 為每一個數據庫的表生成對應的SqlMap檔案-->
        <sqlMapGenerator targetPackage="mapper"  targetProject="src/main/resources"/>
        <!-- 客戶端程式碼,生成易於使用的針對Model物件和XML配置檔案 的程式碼
            type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper物件
            type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper物件
            type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper介面
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.oukele.myspringbootproject.dao"  targetProject="src/main/java"/>

        <!-- tableName 表名  % -> 全部表   -->
        <table tableName="user">
            <generatedKey column="id" sqlStatement="Mysql"/>
        </table>

    </context>
</generatorConfiguration>

在 pom.xml 檔案新增外掛。

<!-- mybatis.generator 外掛  -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>

                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                </configuration>
                <!-- 資料庫依賴  -->
                <dependencies>
                    <dependency>
                        <groupId>org.mariadb.jdbc</groupId>
                        <artifactId>mariadb-java-client</artifactId>
                        <version>2.3.0</version>
                    </dependency>
                </dependencies>
            </plugin>

在這裡插入圖片描述
然後。
在這裡插入圖片描述

生成成功。

在這裡插入圖片描述

現在 來 配置 application.properties 檔案。

#設定 Tomcat 埠號
server.port=8081

# 配置 mybatis
# 設定 別名型別包 (實體類)
mybatis.type-aliases-package=com.oukele.myspringbootproject.entity
# 設定 mybatis 對映 的 SQL語法 xml檔案
mybatis.mapper-locations=classpath:mapper/*.xml

# 連線資料庫
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/test
spring.datasource.username=oukele
spring.datasource.password=oukele
# 設定資料來源 (c3p0連線池)
spring.datasource.type=com.mchange.v2.c3p0.ComboPooledDataSource

#啟動 熱部署
spring.devtools.livereload.enabled=true

如果嫌 上面的寫法 太囉嗦 可將 application.properties 檔案 字尾名改成 yml

內容改成如下:

# mybatis 配置
mybatis:
  typeAliasesPackage: com.oukele.myspringbootproject.entity
  mapperLocations: classpath:mapper/*.xml
        

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://localhost:3306/test
    username: oukele
    password: oukele
    # 資料來源
    type: com.mchange.v2.c3p0.ComboPooledDataSource

# 這裡是預設配置
spring.devtools.restart.enabled: true
# 設定重啟的目錄
spring.devtools.restart.additional-paths: src/main/java
# classpath目錄下的WEB-INF資料夾內容修改不重啟

server:
  port: 8081

pom.xml 中依賴。

<?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>
        <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.oukele</groupId>
    <artifactId>my-springboot-project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>my-springboot-project</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--監控容器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </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-thymeleaf</artifactId>
        </dependency>
        <!-- web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- mybatis -->
        <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-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- Tomcat -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- springboot 自動配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--資料庫驅動-->
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>2.3.0</version>
        </dependency>
        <!--c3p0 連線池-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <!-- mybatis.generator 外掛  -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>

                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                </configuration>
                <!-- 資料庫依賴  -->
                <dependencies>
                    <dependency>
                        <groupId>org.mariadb.jdbc</groupId>
                        <artifactId>mariadb-java-client</artifactId>
                        <version>2.3.0</version>
                    </dependency>
                </dependencies>
            </plugin>

        </plugins>
    </build>

</project>

這裡,我們啟動專案,看下能不能啟動。

首先在 templates 檔案中 新建一個 index.html 網頁

在這裡插入圖片描述
然後。
在這裡插入圖片描述
在這裡插入圖片描述

最後

在這裡插入圖片描述

啟動成功。

在這裡插入圖片描述

效果如下:

在這裡插入圖片描述

開始我們的主菜。

  • 專案結構
    在這裡插入圖片描述

service包中UserService介面

package com.oukele.myspringbootproject.service;

import com.oukele.myspringbootproject.entity.User;
import java.util.List;


public interface UserService {
    List<User> listAll();
}

serviceImp包中UserServiceImp類

package com.oukele.myspringbootproject.serviceImp;

import com.oukele.myspringbootproject.dao.UserMapper;
import com.oukele.myspringbootproject.entity.User;
import com.oukele.myspringbootproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImp implements UserService {

    @Autowired
    private UserMapper userMapper;//這裡出現紅色波浪線,並不影響使用

    @Override
    public List<User> listAll() {
        return userMapper.selectAll();
    }
}

controller包中Usercontroller類

package com.oukele.myspringbootproject.controller;

import com.oukele.myspringbootproject.entity.User;
import com.oukele.myspringbootproject.serviceImp.UserServiceImp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserServiceImp userServiceImp;

    @GetMapping(path = "/list")
    public List<User> getAll(){
        return userServiceImp.listAll();
    }
}

在這裡插入圖片描述類的修改。

package com.oukele.myspringbootproject;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.oukele.myspringbootproject.dao")//掃描介面
public class MySpringbootProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringbootProjectApplication.class, args);
    }

}

重啟專案,訪問/list 的結果:

在這裡插入圖片描述

使用logback日誌:

在resources檔案中 新建logback-spring.xml 檔案 (springboot預設集成了 logback 直接在resources建立 logback-spring.xml即可)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %msg%n
            </Pattern>
        </layout>
    </appender>

    <logger name="com.oukele.myspringbootproject.dao" level="TRACE" />

    <root level="error">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

在這裡插入圖片描述

重新啟動的效果:

在這裡插入圖片描述
到這裡,我們就完成了一個專案的搭建。
演示專案下載地址:https://github.com/oukele/my-SpringBoot-Project-One