Springboot+Springmvc+Mybatis框架搭建


1、新建項目

  由於自己的IDEA是社區版的,因此先建立一個maven項目,然后手工加入springboot的pom依賴。

  設置組織名和項目名。

  建好項目后,先設置默認文件編碼為utf-8和maven倉庫位置。

  把需要的文件夾建好。

2、pom文件和熱部署

2.1 依賴

<?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>

    <groupId>FH_TL1</groupId>
    <artifactId>SvmDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
    </dependencies>

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

  spring-boot-starter-thymeleaf是使用thymeleaf模板需要的依賴。

2.2 熱部署

  使用熱部署的話需要spring-boot-devtools依賴,IDEA默認是關閉熱部署的,因此在配置了依賴后可以手動或自動2種方式使用:

1、手動方式:Crtl + F9快捷鍵,在修改了html等腳本后,使用這個快捷鍵編譯。感覺還是手動好用吧,不用想着頁面沒變化是不是因為沒有刷新成功。

2、自動方式:按Crtl + Shift + Alt + /快捷鍵,再進入Registry,勾選compiler.automake.allow.when.app.running,然后Build->Compiler勾選Build Project automatically。最后重啟下IDEA就可以了。

3、配置文件

  application.yml:

spring:
  profiles:
    active: dev

  application-dev.yml:

server:
  port: 8080

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/svm?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
  thymeleaf:
    cache: false
    prefix: classpath:/templates/
    suffix: .html
    encoding: UTF-8
    content-type: text/html
    mode: HTML5

mybatis:
  #mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: com.yue.entity

  這是在項目中配置多套環境的配置方法。application.yml設置使用哪套環境,每個環境設置自己的參數配置。在Spring Boot中多環境配置文件名需要滿足application-{profile}.yml的格式,其中{profile}對應你的環境標識,比如application-dev.yml。

  com.mysql.cj.jdbc.Driver是jdbc最新的驅動,原驅動也能用但會報一個錯誤。

  mybatis使用注解式的話需要注釋掉mapper-locations,type-aliases-package是實體類的包,使用這個可以把這個包內的實體類用簡單名稱表示。

4、建立數據庫表

  把數據庫中的表建好。

CREATE TABLE user(
    id INTEGER PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL UNIQUE,
    age INTEGER
)

插入數據。

5、后台實現

5.1 實體類

  User.java:

package com.yue.entity;

public class User {
    private int id;
    private String name;
    private String age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

5.2 啟動Main函數

  AppMain.java:

package com.yue;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.yue.mapper")
public class AppMain {
    public static void main(String[] args) {
        SpringApplication.run(AppMain.class);
    }
}

  @SpringBootApplication = @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan。

5.3 controller類

  Forward.java:

package com.yue.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class Forward {

    @RequestMapping("/index")
    public String index() {
        return "/index";
    }
}

  頁面上請求http://localhost:8080/index后跳到這個方法,然后跳轉到對應的index.html頁面。

  Query.java:

 1 package com.yue.controller;
 2 
 3 import com.yue.entity.User;
 4 import com.yue.service.impl.QueryService;
 5 import org.apache.ibatis.annotations.Param;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.RestController;
 9 
10 @RestController
11 @RequestMapping("/")
12 public class Query {
13 
14     @Autowired
15     private QueryService queryService;
16 
17     @RequestMapping("/getUser")
18     public User getUser(@Param("id") String id) {
19         User user = queryService.getName(1);
20         return user;
21     }
22 
23 }

  前端傳入id值后,后端返回user數據。

  @RestController = @Controller + @ResponseBody,@Controller標注這是一個控制器類,@ResponseBody是把返回的數據轉成json格式返回。

  @RequestMapping是請求的路徑。

  @Param是前端傳入的參數

  @Autowired是自動注入,可以注入被@Service、@Controller、@Repository、@Component注解的類:

1、@Service:用於標注業務層組件。

2、@Controller:用於標注控制層組件。

3、@Repository:用於標注數據訪問組件,即DAO組件。

4、@Component:泛指組件,當組件不好歸類的時候,可以使用這個注解進行標注。

5.4 Service類

  BaseService.java:

1 package com.yue.service;
2 
3 public class BaseService {}

  基礎類,用於放置公共方法,哪怕沒有一個方法也要放上去,之后方便加入。

  QueryService.java:

 1 package com.yue.service.impl;
 2 
 3 import com.yue.entity.User;
 4 import com.yue.mapper.QueryMapper;
 5 import com.yue.service.BaseService;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Service;
 8 
 9 @Service
10 public class QueryService extends BaseService {
11     @Autowired
12     private QueryMapper queryMapper;
13 
14     public User getName(int id){
15         return queryMapper.queryUser(id);
16     }
17 }

5.5 Mapper類

  QueryMapper.java:

 1 package com.yue.mapper;
 2 
 3 import com.yue.entity.User;
 4 import org.apache.ibatis.annotations.Select;
 5 import org.springframework.stereotype.Repository;
 6 
 7 @Repository
 8 public interface QueryMapper {
 9 
10     @Select("SELECT * FROM user WHERE id = #{id}")
11     User queryUser(int id);
12 }

  使用注解的方式實現mybatis。

6、前端實現

6.1 html頁面

  index.html:

 1 <!DOCTYPE HTML>
 2 <html xmlns="http://www.w3.org/1999/xhtml"
 3       xmlns:th="http://www.thymeleaf.org">
 4 <head>
 5     <meta charset="utf-8"/>
 6     <title>測試網站</title>
 7     <link th:href="@{/css/index.css}" rel="stylesheet" type="text/css"/>
 8     <script type="text/javascript" th:src="@{/js/jquery.js}"></script>
 9     <script type="text/javascript" th:src="@{/js/index.js}"></script>
10 </head>
11 <body>
12 <p>
13     <label class="name">用戶id:</label>
14     <input placeholder="輸入id" type="text" class="text-box" id="id"/>
15     <button id="aa">按鈕</button>
16 </p>
17 </body>
18 </html>

  需要加入xmlns:th="http://www.thymeleaf.org"命名空間,說明使用thymeleaf模板。

6.2 css實現

  index.css:

1 p,label{
2     color: green;
3 }

6.3 js實現

 1 $(document).ready(function(){
 2     $("button#aa").click(function(){
 3         //var jsonObj = {id: $("#id").val(),name:"abcd",age:"123"};
 4         $.ajax({
 5             async : false,
 6             url: "/getUser",
 7             data:{
 8                 id:$("#id").val()
 9             },
10             //data:JSON.stringify(jsonObj),  傳入json數據
11             type: "POST",
12             dataType:"json",//返回數據類型
13             //headers:{"Content-Type":"application/json"},  傳入json數據時需設置請求頭
14             success:function(data){
15                 alert(data.name);
16             },
17             error:function(err){
18                 alert('連接失敗');
19             }
20         });
21     });
22 });

 7、使用效果

  網頁請求http://localhost:8080/index。

  點擊按鈕:

8、項目git地址

  https://gitee.com/wyliu/SvmDemo.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM