使用SpringToolSuite快速構建一個SpringBoot項目

使用SpringToolSuite快速構建一個SpringBoot項目

話不多說,直奔主題。
先上效果圖
在這裏插入圖片描述

1、搭建開發環境

安裝JDK(至少1.8),安裝SpringToolSuite,此處這兩個安裝我就不再廢話了,直接跳過。

2、安裝Maven

安裝就略過了,一般都是直接解壓即可。

2.1、配置maven環境變量

在這裏插入圖片描述

2.2、settings.xml更換maven鏡像倉庫地址

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

<mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>

2.3、settings.xm設置本地maven倉庫地址

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

2.4、sts-preferences設置Installations

在這裏插入圖片描述

2.5、sts-preferences設置User Settings

在這裏插入圖片描述

3、創建Stater Project

3.1、設置New Spring Starter Project參數

在這裏插入圖片描述

3.2、選擇依賴

根據自身情況選擇SpringBootversion版本,以及自己需要使用的架包.
Spring Boot DevTools :熱部署
Spring Web :囊括了spring Web項目的包
thymeleaf:模板引擎
Mybatis Framework :mybatis框架
在這裏插入圖片描述創建項目後,發現如下報錯信息,mavan已經給我們管理架包了,所以架包不太可能會出現衝突,出現的問題,可能是maven的版本問題。如下問題就是maven問題。
在這裏插入圖片描述
在2.2中,我們選擇的版本是2.2.2版本,但是可能我們所安裝的maven不一定適用該版本,因此我們可以修改版本。如修改到2.1.0版本。修改版本後,項目鼠標右鍵—》maven—》update project。等待更新架包即可。
在這裏插入圖片描述

3.3、添加依賴

如果我們創建項目的時候沒有勾選的驅動,框架架包等,我們也可以自行在pom文件中添加,如這裏添加了mysql的驅動。

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<!--mysql驅動  -->
	<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
	</dependency>
	<!--mybatis依賴  -->
	<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>2.1.1</version>
	</dependency>

3.4、配置application

可以採用yalm,也可以採用properties,這裏我們採用properties。
server.port=8081
#設置前端模板引擎
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
#設置開啓或者關閉和thymeleaf的頁面緩存
spring.thymeleaf.cache=false
#設置熱部署
spring.devtools.restart.enabled=true
#設置需要開啓熱部署的文件目錄
spring.devtools.restart.additional-paths=src/main/java
#設置mysql連接
spring.datasource.url = jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
#設置日期格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.write-dates-as-timestamps=false
#設置日誌
logging.path=/softwareLifeCycle/target/log
logging.file=softwareLifeCycle.log
logging.level.root=info
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
至此,我們的配置工作基本完成,上述配置中,模板引擎和mysql是必須,而其他的配置,如果沒有配置,則會採用系統默認的配置。

4、開始編寫我們的項目

4.1、創建如下目錄(可自己隨意創建),編寫啓動類

通過STS的創建的spring Boot項目,會給我們自動創建好了啓動類
在這裏插入圖片描述

4.2、配置注入返回的數據實體類

在這裏插入圖片描述
public class ResultData implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;

private String resultCode;

private String resultInfo;

private String token;

public Object data;

public String getResultCode() {
	return resultCode;
}

public void setResultCode(String resultCode) {
	this.resultCode = resultCode;
}

public String getResultInfo() {
	return resultInfo;
}

public void setResultInfo(String resultInfo) {
	this.resultInfo = resultInfo;
}

public String getToken() {
	return token;
}

public void setToken(String token) {
	this.token = token;
}

public Object getData() {
	return data;
}

public void setData(Object data) {
	this.data = data;
}

@Override
public String toString() {
	return "ResultData [resultCode=" + resultCode + ", resultInfo=" + resultInfo + ", token=" + token + ", data="
			+ data + "]";
}
@Configuration

public class ResultDataConfiguration {

/**
 * @Description: 統一處理返回數據
 * @author hutao
 * @mail [email protected]
 * @date 2019年12月22日
 */
@Bean
public ResultData resultData() {
	return new ResultData();
}

}

4.3、編寫我們的控制器類

在這裏插入圖片描述
備註 @RestController 採用rest風格請求,因此是需要返回數據的,而不是返回頁面,用了RestController註解,該控制器的方法就不能使用返回String的形式去返回頁面了。
因此如果需要實現以下效果,不能使用RestController
在這裏插入圖片描述

4.4、編寫我們的service實現類

下述這個代碼中,service沒有將查詢的數據庫直接返回給控制器,而是將與數據庫持久化的對象的鏡像返回給控制器。
在這裏插入圖片描述
import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;

/**

  • @Description: 對象轉換工具類,將資源類Source轉化爲目標類Target

  • @author hutao

  • @mail [email protected]

  • @date 2019年12月19日
    */
    public class ClassConverter<Source, Target> {
    protected static final Logger logger = LoggerFactory.getLogger(ClassConverter.class);

    /**

    • @Description: 將單個的Source對象轉化成單個的Target對象
    • @author hutao
    • @mail [email protected]
    • @date 2019年12月19日
      */
      public Target convert(Source source, Class clazz) {
      if (source == null) {
      return null;
      }
      Target target = null;
      try {
      target = clazz.newInstance();
      } catch (Exception e) {
      logger.error(“初始化{}對象失敗,失敗原因”, clazz, e);
      }
      convert(source, target);
      return target;
      }

    /**

    • @Description: 批量將List集合轉化成List集合
    • @author hutao
    • @mail [email protected]
    • @date 2019年12月19日
      */
      public List convert(List listSource, Class clazz) {
      if (CollectionUtils.isEmpty(listSource)) {
      return null;
      }
      List listTarget = new ArrayList();
      try {
      for (Source source : listSource) {
      listTarget.add(convert(source, clazz));
      }
      return listTarget;
      } catch (Exception e) {
      logger.error(“批量將List集合轉化成List集合失敗,失敗原因:”+e);
      }
      return null;

    }

    /**

    • @Description: 屬性拷貝方法,有特殊需求時子類覆寫此方法
    • @author hutao
    • @mail [email protected]
    • @date 2019年12月19日
      */
      private void convert(Source source, Target target) {
      try {
      BeanUtils.copyProperties(source, target);
      } catch (Exception e) {
      logger.error(“屬性轉換異常,異常原因:”+e);
      }
      }
      }

4.5、編寫我們的mapper接口

在這裏插入圖片描述
public class Company implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;

private String companyName;//公司名稱

private String companyAddress;//公司地址

private String emailAddress;//郵件

private String userName;

private String passWord;

private String companyCode;//公司編號碼

private String customerType;//客戶類型 : F免費客戶   A級收費客戶  B級收費客戶  C級收費客戶

private String operator;//操作者

private String status;//狀態:S申請中  Y有效   W無效(過期)

private Date startEffectTime;//有效開始日期

private Date endEffectTime;//有效結束日期

private Date createTime;

private Date updateTime;

public String getCompanyName() {
	return companyName;
}

public void setCompanyName(String companyName) {
	this.companyName = companyName;
}

public String getCompanyAddress() {
	return companyAddress;
}

public void setCompanyAddress(String companyAddress) {
	this.companyAddress = companyAddress;
}

public String getEmailAddress() {
	return emailAddress;
}

public void setEmailAddress(String emailAddress) {
	this.emailAddress = emailAddress;
}

public String getUserName() {
	return userName;
}

public void setUserName(String userName) {
	this.userName = userName;
}

public String getPassWord() {
	return passWord;
}

public void setPassWord(String passWord) {
	this.passWord = passWord;
}

public String getCompanyCode() {
	return companyCode;
}

public void setCompanyCode(String companyCode) {
	this.companyCode = companyCode;
}

public String getCustomerType() {
	return customerType;
}

public void setCustomerType(String customerType) {
	this.customerType = customerType;
}

public String getOperator() {
	return operator;
}

public void setOperator(String operator) {
	this.operator = operator;
}

public String getStatus() {
	return status;
}

public void setStatus(String status) {
	this.status = status;
}

public Date getStartEffectTime() {
	return startEffectTime;
}

public void setStartEffectTime(Date startEffectTime) {
	this.startEffectTime = startEffectTime;
}

public Date getEndEffectTime() {
	return endEffectTime;
}

public void setEndEffectTime(Date endEffectTime) {
	this.endEffectTime = endEffectTime;
}

public Date getCreateTime() {
	return createTime;
}

public void setCreateTime(Date createTime) {
	this.createTime = createTime;
}

public Date getUpdateTime() {
	return updateTime;
}

public void setUpdateTime(Date updateTime) {
	this.updateTime = updateTime;
}

@Override
public String toString() {
	return "Company [companyName=" + companyName + ", companyAddress=" + companyAddress + ", emailAddress="
			+ emailAddress + ", userName=" + userName + ", passWord=" + passWord + ", companyCode=" + companyCode
			+ ", customerType=" + customerType + ", operator=" + operator + ", status=" + status
			+ ", startEffectTime=" + startEffectTime + ", endEffectTime=" + endEffectTime + ", createTime="
			+ createTime + ", updateTime=" + updateTime + "]";
}

5、開始編寫我們的前端

5.1、編寫HTML頁面

公司申請管理頁面
	<link rel="stylesheet" href="../plugins/bootStrap/css/bootstrap.min.css">  
	<script src="../plugins/jquery-3.0.0/jquery-3.0.0.min.js"></script>
	<script src="../plugins/bootStrap/js/bootstrap.min.js"></script>       
	<script src="../plugins/bootStrap/js/bootstrap-table.min.js"></script>       
	 
    <script src="../js/common/httpUrlConstant.js"></script>
    <script src="../js/common/httpUtils.js"></script>
    
    <script src="../js/company/application.js"></script>
    
</head>
<body>
	<div id = "" style="width:100%">
		<table class="table table-hover" id = "applicationCompany"></table>
	</div>
</body>
### 5.2、編寫JS #### httpUtils.js /** *

請求提交Object對象 * @author hutaoa * var data = { * "userName":$("#userName").val(), "passWord":$("#passWord").val(), "token":"" * } * */ function httpRequestForObjetc(url,objectData){ var resultData; $.ajax({ type: "POST", url: url, data:objectData, async: false, dataType: "json", success: function(rdata){ resultData = rdata; }

});
return resultData;

}
/**

  • 請求提交Json字符串

*/
function httpRequestForJson(url,jsonStrData){
var resultData;
$.ajax({
type: “POST”,
contentType: “application/json;charset=UTF-8”,//Spring MVC @RequestBody註解做提交json字符串自動綁定到pojo入參
url: url,
data:jsonStrData,
async: false,
dataType: “json”,
success: function(rdata){
resultData = rdata;
}

});
return resultData;

}
/**

  • 請求提交form表單文件

  • @author hutaoa
    */
    function httpRequestForFile(url,formData){
    var resultData;
    $.ajax({
    url:url,
    type: ‘POST’,
    data: formData,
    async: false,
    cache: false,
    contentType: false,
    processData: false,
    success: function (data) {
    resultData = data;
    },
    error: function (data) {
    alert(“文件上傳失敗,請聯繫管理員”);
    }
    });
    }

httpUrlConstant.js

var baseUrl = “http://127.0.0.1:8081/”
/**

  • 跳轉頁面地址
    */
    var pageUrlConstant = {
    //登錄地址
    “login” : baseUrl+“page/login”,
    //忘記密碼地址
    “forget”:baseUrl+“page/forgetPassword”,
    //註冊地址
    “register”:baseUrl+“page/register”,
    //PC系統主頁面
    “homeMain”:baseUrl+“page/homeMain”,
    }

/**

  • 處理公司模塊接口地址
    /
    var companyUrlConstant = {
    //提交公司註冊信息
    “registerSubmit”:baseUrl+“company/registerSubmit”,
    //認證公司註冊信息
    “registerApprove”:baseUrl+“company/registerApprove”,
    //查詢公司信息
    “queryApplication”:baseUrl+“company/queryApplication”
    }
    /
    *
  • 處理用戶模塊接口地址
    */
    var userUrlConstant = {
    //登錄認證地址
    “loginApprove”:baseUrl+“user/loginApprove”
    }
    var httpUrlConstant = {
    “token”:"",
    “pageUrlConstant”:pageUrlConstant,
    “companyUrlConstant”:companyUrlConstant,
    “userUrlConstant”:userUrlConstant
    }

application.js

$(function () {
initApplicationCompanyTable();
})

/**

  • 初始化申請公司表格
    */
    function initApplicationCompanyTable(){
    var url = httpUrlConstant.companyUrlConstant.queryApplication;
    $(’#applicationCompany’).bootstrapTable({
    url: url,
    //url:"…/data/company.json",
    queryParams:{“status”:“A”},//狀態爲申請中的
    method:‘POST’,
    dataType:‘json’,
    contentType : “application/x-www-form-urlencoded”,
    pagination:true,
    search:true,
    cache: false,
    pageNumber:1,
    pageSize: 10,
    columns: [
    {field: ‘companyCode’,title: ‘公司代碼’, align: ‘center’},
    {field: ‘companyName’,title: ‘公司名稱’, align: ‘center’,},
    {field: ‘emailAddress’,title: ‘郵箱’, align: ‘center’,},
    {field: ‘userName’,title: ‘登錄用戶’, align: ‘center’,},
    {field: ‘customerType’,title: ‘客戶類型’, align: ‘center’,},
    {field: ‘companyAddress’,title: ‘公司地址’, align: ‘center’,},
    {field: ‘createTime’,title: ‘申請時間’, align: ‘center’,}
    ]
    });
    }
發佈了7 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章