Gradle
定义: 一个开源的项目自动化构建工具,建立在Apache Ant和Apache Maven概念的基础上,并引入了基于Groovy的特定领域语言DSL,而不再使用XML形式管理构建脚本。
一、准备Gradle
- 安装
- 确保安装JDK,java -version
- 从Gradle官网下载Gradle,https://gradle.org/install/#manually
下载完毕后,解压到自己的本地文件夹中E:\develop\gradle-5.6.1
- 配置环境变量,GRADLE_HOME
- 添加到path,%GRADLE_HOME%\bin;
- 验证安装是否成功,gradle -v
- 了解Groovy
- 定义:Groovy是用于java虚拟机的一种敏捷的动态语言,是一种成熟的面向对象编程语言,即可用于面向对象编程,又可以用作纯粹的脚本语言。使用该语言不必编写过多的代码,同事又具有闭包和动态语言中的其他特性。
- 与java比较
- Groovy完全兼容java语法
- 分号可选
- 类、方法默认是public
- 编译器给属性自动添加getter、setter方法
- 属性可以直接用点号获取
- 最后一个表达式的值会被作为返回值
- ==等同于equals(),不会有空指针异常
- assert语句
def version = 1
assert version == 2
- 可选类型定义,弱类型语言
def version = 1 //version是一个int类型
- 可选的括号
println version
- 字符串 单引号、双引号、三个单引号
def version = 1
def s1 = 'imooc' //仅指字符串
def s2 = "gradle is ${version}" //可以插入变量
def s3 = '''my
name
is
imooc
''' // 可以换行
- 集合api
// Map
def buildYesrs = ['ant': 2000, 'maven': 2004]
buildYesrs.gradle = 2009
// List
def buildTools = ['ant','maven']
buildTools << 'gradle'
- 闭包
def c1 = {
v ->
print v
}
def c2 = {
print 'hello'
}
def method1(Closure closure){
closure('param')
}
def method2(Closure closure){
closure()
}
method1(c1)
method2(c2)
- 构建脚本
// 构建脚本中默认都是有个Project实例的
apply plugin:'java'
version = '0.1'
repositories{
mavenCetral()
}
dependencies{
compile 'commons-codec:commons-codec:1.6'
}
二、搭建项目
- 首先用idea创建基础的gradle项目工程。
- 公用配置创建dependencies.gradle
ext {
// 基础版本
versions = [
springBootVersion: '1.5.4.RELEASE'
]
// 基础依赖
libs = [
common: [
"org.springframework.boot:spring-boot-starter-web:${versions.springBootVersion}",
"org.springframework.boot:spring-boot-starter-data-jpa:${versions.springBootVersion}",
"org.apache.commons:commons-lang3:3.5"
],
mysql: [
"mysql:mysql-connector-java:5.1.29"
],
test: [
"org.springframework.boot:spring-boot-starter-test:${versions.springBootVersion}",
]
]
}
- 修改build.gradle
plugins {
id 'java'
}
group 'com.imooc'
version '1.0-SNAPSHOT'
apply from: "$rootDir/dependencies.gradle"
subprojects {
apply plugin: 'java'
apply plugin: 'war'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile libs.common
testCompile libs.test
testCompile group: 'junit', name: 'junit', version: '4.12'
}
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
}
- 创建模块,删除模块下的build.gradle文件内容,因为都在公用里面的subprojects里配置好了,目录结构如下:
三、数据库设计
1 . 创建产品端订单表
[外链图片转存失败(img-P52UvTcB-1567671631550)(E:\文章\Gradle\images\1567576819121.png)]
# 创建manger管理端数据库
CREATE DATABASE manager;
# 使用manager
USE manager;
CREATE TABLE product(
id VARCHAR(50) NOT NULL COMMENT '产品编号',
NAME VARCHAR(50) NOT NULL COMMENT '产品名称',
threshold_amount DECIMAL(15,3) NOT NULL COMMENT '起投金额',
set_amount DECIMAL(15,3) NOT NULL COMMENT '投资步长',
lock_term SMALLINT NOT NULL COMMENT '锁定期',
reward_rate DECIMAL(5,3) NOT NULL COMMENT '收益期。0-100 百分比值',
STATUS VARCHAR(20) NOT NULL COMMENT '状态,AUDINTING:审核中,IN_SELL:销售中,LOCAKED:暂停销售,FINISHED:已结束',
memo VARCHAR(200) COMMENT '备注',
create_at DATETIME COMMENT '创建时间',
create_user VARCHAR(20) COMMENT '创建者',
update_at DATETIME COMMENT '更新时间',
update_user VARCHAR(20) COMMENT '更新者',
PRIMARY KEY(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
2. 创建销售端订单表
[外链图片转存失败(img-4UOovFxl-1567671631663)(E:\文章\Gradle\images\1567577056206.png)]
# 创建seller销售端数据库
CREATE DATABASE seller;
# 使用seller
USE seller;
CREATE TABLE order_t(
order_id varchar(50) not null comment '订单编号',
chan_id VARCHAR(50) NOT NULL COMMENT '渠道编号',
product_id VARCHAR(50) NOT NULL COMMENT '产品编号',
chan_user_id VARCHAR(50) NOT NULL COMMENT '渠道用户编号',
order_type VARCHAR(50) NOT NULL COMMENT '类型:APPLY:申购,REDEEM:赎回',
order_status VARCHAR(50) NOT NULL COMMENT '类型:INIT:初始化,PROCESS:处理中,SUCCESS:成功,FAIL:失败',
outer_order_id VARCHAR(50) NOT NULL COMMENT '外部订单编号',
amount DECIMAL(15,3) NOT NULL COMMENT '金额',
memo VARCHAR(200) COMMENT '备注',
create_at DATETIME COMMENT '创建时间',
update_at DATETIME COMMENT '更新时间',
PRIMARY KEY (order_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
3. 创建实体类
在entity模块下创建Order类 和enums枚举类型
package com.imooc.entity;
/**
* 产品
* @Entity 实体类 因为Order对应的表示order_t
* @Id 主键
*/
@Entity(name="order_t")
public class Order {
// 产品编号
@Id
private String id;
// 产品名称
private String name;
/**
* 状态
* @see com.imooc.entity.enums.ProductStatus
*/
private String status;
// 起投金额
private BigDecimal thresholdAmount;
// 投资步长
private BigDecimal stepAmount;
// 锁定期
private Integer lockTerm;
// 收益期。0-100 百分比值
private BigDecimal rewardRate;
// 备注
private String memo;
// 创建时间
private Date createAt;
// 更新时间
private Date updateAt;
// 创建者
private String createUser;
// 更新者
private String updateUser;
package com.imooc.entity.enums;
/**
* 产品状态
*/
public enum ProductStatus {
AUDITING("审核中"),
IN_SELL("销售中"),
LOCAKED("暂停销售"),
FINISHED("已结束");
private String desc;
ProductStatus(String desc){
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
在entity模块下创建Product类和枚举类型OrderType、OrderStatus
package com.imooc.entity;
/**
* 订单
* @Entity 实体类
* @Id 主键
*/
@Entity
public class Product {
//订单编号
@Id
private String orderId;
//渠道编号
private String chanId;
//渠道用户编号
private String chanUserId;
/**
* @see com.imooc.entity.enums.OrderType
*/
private String orderType;
//产品编号
private String productId;
//金额
private BigDecimal amount;
//外部订单编号
private String outerOrderId;
/**
* @see com.imooc.entity.enums.OrderStatus
*/
private String orderStatus;
//备注
private String memo;
//创建时间
private Date createAt;
//更新时间
private Date updateAt;
package com.imooc.entity.enums;
/**
* 订单类型
*/
public enum OrderType {
APPLY("申购"),
REDEEM("赎回");
private String desc;
OrderType(String desc){
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
package com.imooc.entity.enums;
public enum OrderStatus {
INIT("初始化"),
PROCESS("处理中"),
SUCCESS("成功"),
FAIL("失败");
private String desc;
OrderStatus(String desc){
this.desc = desc;
}
public String getDesc() {
return desc;
}
}