使用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万+

猜你喜欢

转载自blog.csdn.net/m0_37892044/article/details/103915284