mymes項目搭建基本骨架
本文主要講解mymes整合SpringBoot+MyBatis搭建基本骨架,以工業MES為基礎實現基本的的CRUD操作及通過PageHelper實現分頁查詢。
1.MySQL數據庫環境的搭建
下載并安裝mysql5.7,下載地址:https://dev.mysql.com/downloads/installer/
創建數據庫腳本mymes
項目框架介紹
SpringBoot
Spring Boot提供了一種新的編程范式,能在最小的阻力下開發Spring應用程序。有了它, 你可以更加敏捷地開發Spring應用程序,專注于應用程序的功能,不用在Spring的配置上多花功 夫,甚至完全不用配置。實際上,Spring Boot的一項重要工作就是讓Spring不再成為你成功路上 的絆腳石。
Druid
Druid是一個高效的數據查詢系統,主要解決的是對于大量的基于時序的數據進行聚合查詢。數據可以實時攝入,進入到Druid后立即可查,同時數據是幾乎是不可變。通常是基于時序的事實事件,事實發生后進入Druid,外部系統就可以對該事實進行查詢。
Mybatis generator
MyBatis的代碼生成器,可以根據數據庫生成model、mApper.xml、mapper接口和Example,通常情況下的單表查詢不用再手寫mapper。
搭建項目
IDEA下載2020.1鏈接:https://pan.baidu.com/s/1ht1HdpcCYFB_txQ8Xm1MLA關注公眾號:回復IDEA獲取提取碼
使用IDEA初始化一個SpringBoot項目
添加項目依賴
在pom.xml中添加要使用的依賴
<!--MyBatis分頁插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
<!--集成druid連接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!-- MyBatis 生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<!--Mysql數據庫驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-JAVA</artifactId>
<version>5.1.10</version>
</dependency>
<!--Hutool Java工具包-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.7</version>
</dependency>
<!--MyBatis Plus 依賴-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--MyBatis Plus 代碼生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
MySql數據驅動的注意事項:
下載的是5.7的mysql則mysql-connector-java版本下載5.1.X的,配置使用com.mysql.jdbc.Driver
下載的是8.X的mysql則mysql-connector-java版本下載8.0,配置使用 com.mysql.cj.jdbc.Driver
修改SpringBoot配置文件
創建application.yml中添加數據源配置和MyBatis的mapper.xml的路徑配置
server:
port: 9999
spring:
datasource:
url: jdbc:mysql://localhost:3306/mymes?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
mybatis:
mapper-locations:
- classpath:mapper/*.xml
- classpath*:com/**/mapper/*.xml
創建common文件夾存放通用類,例如通用返回類
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 分頁數據封裝類
*
*/
public class CommonPage<T> {
private Integer pageNum;
private Integer pageSize;
private Integer totalPage;
private Long total;
private List<T> list;
/**
* 將MyBatis Plus 分頁結果轉化為通用結果
*/
public static <T> CommonPage<T> restPage(Page<T> pageResult) {
CommonPage<T> result = new CommonPage<>();
result.setPageNum(Convert.toInt(pageResult.getCurrent()));
result.setPageSize(Convert.toInt(pageResult.getSize()));
result.setTotal(pageResult.getTotal());
result.setTotalPage(Convert.toInt(pageResult.getTotal()/pageResult.getSize()+1));
result.setList(pageResult.getRecords());
return result;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
}
/**
* 通用返回對象
*
*/
public class CommonResult<T> {
private long code;
private String message;
private T data;
protected CommonResult() {
}
protected CommonResult(long code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
/**
* 成功返回結果
*
* @param data 獲取的數據
*/
public static <T> CommonResult<T> success(T data) {
return new CommonResult<T>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data);
}
/**
* 成功返回結果
*
* @param data 獲取的數據
* @param message 提示信息
*/
public static <T> CommonResult<T> success(T data, String message) {
return new CommonResult<T>(ResultCode.SUCCESS.getCode(), message, data);
}
/**
* 失敗返回結果
* @param errorCode 錯誤碼
*/
public static <T> CommonResult<T> failed(IErrorCode errorCode) {
return new CommonResult<T>(errorCode.getCode(), errorCode.getMessage(), null);
}
/**
* 失敗返回結果
* @param errorCode 錯誤碼
* @param message 錯誤信息
*/
public static <T> CommonResult<T> failed(IErrorCode errorCode,String message) {
return new CommonResult<T>(errorCode.getCode(), message, null);
}
/**
* 失敗返回結果
* @param message 提示信息
*/
public static <T> CommonResult<T> failed(String message) {
return new CommonResult<T>(ResultCode.FAILED.getCode(), message, null);
}
/**
* 失敗返回結果
*/
public static <T> CommonResult<T> failed() {
return failed(ResultCode.FAILED);
}
/**
* 參數驗證失敗返回結果
*/
public static <T> CommonResult<T> validateFailed() {
return failed(ResultCode.VALIDATE_FAILED);
}
/**
* 參數驗證失敗返回結果
* @param message 提示信息
*/
public static <T> CommonResult<T> validateFailed(String message) {
return new CommonResult<T>(ResultCode.VALIDATE_FAILED.getCode(), message, null);
}
/**
* 未登錄返回結果
*/
public static <T> CommonResult<T> unauthorized(T data) {
return new CommonResult<T>(ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getMessage(), data);
}
/**
* 未授權返回結果
*/
public static <T> CommonResult<T> forbidden(T data) {
return new CommonResult<T>(ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getMessage(), data);
}
public long getCode() {
return code;
}
public void setCode(long code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
/**
* 封裝API的錯誤碼
*
*/
public interface IErrorCode {
long getCode();
String getMessage();
}
/**
* 枚舉了一些常用API操作碼
*
*/
public enum ResultCode implements IErrorCode {
SUCCESS(200, "操作成功"),
FAILED(500, "操作失敗"),
VALIDATE_FAILED(404, "參數檢驗失敗"),
UNAUTHORIZED(401, "暫未登錄或token已經過期"),
FORBIDDEN(403, "沒有相關權限");
private long code;
private String message;
private ResultCode(long code, String message) {
this.code = code;
this.message = message;
}
public long getCode() {
return code;
}
public String getMessage() {
return message;
}
}