提交 37339e89 authored 作者: Matrix's avatar Matrix

feat(CRUD): 增加了增删改查的自动生成部分

上级 9b546abc
......@@ -17,14 +17,13 @@
<artifactId>kt-kit</artifactId>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
<!-- httpClient -->
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
......@@ -35,22 +34,25 @@
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient-cache</artifactId>
<version>4.5</version>
<version>4.5.13</version>
</dependency>
<!-- http的mime类型都在这里面-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.3.2</version>
<version>4.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
......@@ -67,7 +69,7 @@
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec-http</artifactId>
<version>4.1.69.Final</version>
<version>4.1.73.Final</version>
</dependency>
<dependency>
......@@ -93,6 +95,7 @@
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
......
package org.matrix.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
/**
* MetaFieldHandler.
* 元数据处理器,用于处理自动填充的字段
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2021/11/22 at 7:52 下午
*/
@Component
public class MetaFieldHandler implements MetaObjectHandler {
/**
* 创建时设置创建时间
* @param metaObject 数据库原始对象
*/
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
/**
* 更新时设置更新时间
* @param metaObject 数据库原始对象
*/
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
}
package org.matrix.database.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* <p>
* 动作
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Action对象", description = "动作")
public class Action extends BaseEntity {
@ApiModelProperty("ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("行为ID")
private Integer moveId;
@ApiModelProperty("项目ID")
private Integer projectId;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("类型 1为SQL,2为HTTP,3为CASE,4为WAIT_TIME")
private Integer type;
@ApiModelProperty("详细参数")
private String detail;
}
package org.matrix.database.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* BaseEntity.
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2021/11/22 at 4:02 下午
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "基础对象")
public abstract class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(type = IdType.AUTO)
@ApiModelProperty("主键id,从0开始自增")
private Long id;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty("数据创建时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty("数据更新时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime updateTime;
}
package org.matrix.database.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import org.matrix.database.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* <p>
*
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Connect对象", description = "")
public class Connect extends BaseEntity {
@ApiModelProperty("ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("URL")
private String url;
@ApiModelProperty("账号")
private String username;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("所用驱动")
private String driver;
}
package org.matrix.database.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import org.matrix.database.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.matrix.enums.DynamicVarType;
/**
* <p>
*
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("dynamic_variable")
@ApiModel(value = "DynamicVariable对象", description = "")
public class DynamicVariable extends BaseEntity {
@ApiModelProperty("ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("所属项目")
private Integer projectId;
@ApiModelProperty("取用字段")
private String takenField;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("动态变量类型 1为KV,2为SQL,3为CASE,4为HTTP")
private DynamicVarType type;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("详细内容")
private String detail;
}
package org.matrix.database.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import org.matrix.database.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* <p>
* 实例表,项目对应的环境实例,例如:实验室环境,开发环境等
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Example对象", description = "实例表,项目对应的环境实例,例如:实验室环境,开发环境等")
public class Example extends BaseEntity {
@ApiModelProperty("ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("实例名称")
private String name;
@ApiModelProperty("参数名 (例如:env)")
private String parameterName;
@ApiModelProperty("项目ID")
private Integer projectId;
@ApiModelProperty("静态变量,以JSON的形式存储,例如({\"name\":\"张三\"})")
private String variable;
@ApiModelProperty("ip,例如(http:www.abc.com)")
private String ip;
}
package org.matrix.database.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import org.matrix.database.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* <p>
*
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Move对象", description = "")
public class Move extends BaseEntity {
@ApiModelProperty("ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("所属项目")
private Integer projectId;
@ApiModelProperty("备注")
private String remark;
}
package org.matrix.database.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import org.matrix.database.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* <p>
*
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Project对象", description = "")
public class Project extends BaseEntity {
@ApiModelProperty("ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("名称")
private String name;
}
package org.matrix.database.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import org.matrix.database.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* <p>
*
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("test_case")
@ApiModel(value = "TestCase对象", description = "")
public class TestCase extends BaseEntity {
@ApiModelProperty("ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("所属项目")
private Integer projectId;
@ApiModelProperty("用例类型 1为http")
private Integer type;
@ApiModelProperty("前置行动ID组,例如:1,2,3")
private String moveBefore;
@ApiModelProperty("后置行动ID组,例如:1,2,3")
private String moveAferCase;
@ApiModelProperty("测试执行后行动ID组,例如:1,2,3")
private String moveAferTest;
@ApiModelProperty("是否进行异常检验,0为否,1为是")
private Integer abnormalCheckpoint;
@ApiModelProperty("是否进行非空检验,0为否,1为是")
private Integer noEmptyCheckpoint;
@ApiModelProperty("包含某字段检验(例如 张三,李四) 则对检查结果中是否包含张三或者李四")
private String containCheckpoint;
@ApiModelProperty("不包含某字段检验(例如 张三,李四) 则对检查结果中是否不包含张三或者李四")
private String noContainCheckpoint;
@ApiModelProperty("数据库检验点,以JSON形式存放")
private String databaseCheckpoint;
@ApiModelProperty("jsonpath检验点,以json形式存放")
private String jsonpathCheckpoint;
@ApiModelProperty("详细参数")
private String detail;
}
package org.matrix.database.mapper;
import org.matrix.database.entity.Action;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 动作 Mapper 接口
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Repository
public interface ActionMapper extends BaseMapper<Action> {
}
package org.matrix.database.mapper;
import org.matrix.database.entity.Connect;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Repository
public interface ConnectMapper extends BaseMapper<Connect> {
}
package org.matrix.database.mapper;
import org.matrix.database.entity.DynamicVariable;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Repository
public interface DynamicVariableMapper extends BaseMapper<DynamicVariable> {
}
package org.matrix.database.mapper;
import org.matrix.database.entity.Example;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 实例表,项目对应的环境实例,例如:实验室环境,开发环境等 Mapper 接口
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Repository
public interface ExampleMapper extends BaseMapper<Example> {
}
package org.matrix.database.mapper;
import org.matrix.database.entity.Move;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Repository
public interface MoveMapper extends BaseMapper<Move> {
}
package org.matrix.database.mapper;
import org.matrix.database.entity.Project;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Repository
public interface ProjectMapper extends BaseMapper<Project> {
}
package org.matrix.database.mapper;
import org.matrix.database.entity.TestCase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Repository
public interface TestCaseMapper extends BaseMapper<TestCase> {
}
package org.matrix.database.service;
import org.matrix.database.entity.Action;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 动作 服务类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
public interface IActionService extends IService<Action> {
}
package org.matrix.database.service;
import org.matrix.database.entity.Connect;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
public interface IConnectService extends IService<Connect> {
}
package org.matrix.database.service;
import org.matrix.database.entity.DynamicVariable;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
public interface IDynamicVariableService extends IService<DynamicVariable> {
}
package org.matrix.database.service;
import org.matrix.database.entity.Example;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 实例表,项目对应的环境实例,例如:实验室环境,开发环境等 服务类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
public interface IExampleService extends IService<Example> {
}
package org.matrix.database.service;
import org.matrix.database.entity.Move;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
public interface IMoveService extends IService<Move> {
}
package org.matrix.database.service;
import org.matrix.database.entity.Project;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
public interface IProjectService extends IService<Project> {
}
package org.matrix.database.service;
import org.matrix.database.entity.TestCase;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
public interface ITestCaseService extends IService<TestCase> {
}
package org.matrix.database.service.impl;
import org.matrix.database.entity.Action;
import org.matrix.database.mapper.ActionMapper;
import org.matrix.database.service.IActionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 动作 服务实现类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Service
public class ActionServiceImpl extends ServiceImpl<ActionMapper, Action> implements IActionService {
}
package org.matrix.database.service.impl;
import org.matrix.database.entity.Connect;
import org.matrix.database.mapper.ConnectMapper;
import org.matrix.database.service.IConnectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Service
public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> implements IConnectService {
}
package org.matrix.database.service.impl;
import org.matrix.database.entity.DynamicVariable;
import org.matrix.database.mapper.DynamicVariableMapper;
import org.matrix.database.service.IDynamicVariableService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Service
public class DynamicVariableServiceImpl extends ServiceImpl<DynamicVariableMapper, DynamicVariable> implements IDynamicVariableService {
}
package org.matrix.database.service.impl;
import org.matrix.database.entity.Example;
import org.matrix.database.mapper.ExampleMapper;
import org.matrix.database.service.IExampleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 实例表,项目对应的环境实例,例如:实验室环境,开发环境等 服务实现类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Service
public class ExampleServiceImpl extends ServiceImpl<ExampleMapper, Example> implements IExampleService {
}
package org.matrix.database.service.impl;
import org.matrix.database.entity.Move;
import org.matrix.database.mapper.MoveMapper;
import org.matrix.database.service.IMoveService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Service
public class MoveServiceImpl extends ServiceImpl<MoveMapper, Move> implements IMoveService {
}
package org.matrix.database.service.impl;
import org.matrix.database.entity.Project;
import org.matrix.database.mapper.ProjectMapper;
import org.matrix.database.service.IProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Service
public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements IProjectService {
}
package org.matrix.database.service.impl;
import org.matrix.database.entity.TestCase;
import org.matrix.database.mapper.TestCaseMapper;
import org.matrix.database.service.ITestCaseService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author matrix
* @since 2022-01-15
*/
@Service
public class TestCaseServiceImpl extends ServiceImpl<TestCaseMapper, TestCase> implements ITestCaseService {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.matrix.database.mapper.ActionMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.matrix.database.mapper.ConnectMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.matrix.database.mapper.DynamicVariableMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.matrix.database.mapper.ExampleMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.matrix.database.mapper.MoveMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.matrix.database.mapper.ProjectMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.matrix.database.mapper.TestCaseMapper">
</mapper>
......@@ -13,10 +13,36 @@
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!-- datasource 相关-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package org.matrix;
import lombok.Data;
/**
* Hello world!
*
*/
@Data
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
public class App {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
package org.matrix.generator;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Collections;
/**
* CodeGenerator.
* 代码生成器
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2022/1/15 at 3:56 PM
* Suffering is the most powerful teacher of life.
*/
public class CodeGenerator {
private static final String URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false";
private static final String USERNAME = "root";
private static final String PASSWORD = "ldf3291369";
public static void main(String[] args) {
String modelPath = "/kt-base";
String pkgPath = System.getProperty("user.dir") + modelPath + "/src/main/java/";
String resPath = System.getProperty("user.dir") + modelPath + "/src/main/resource/";
FastAutoGenerator.create(URL, USERNAME, PASSWORD)
.globalConfig(builder -> {
builder.author("matrix") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.disableOpenDir()// 关闭文件打开功能
.outputDir(pkgPath); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("org.matrix") // 设置父包名
.moduleName("database")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, resPath)); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.entityBuilder()
.enableLombok()
.disableSerialVersionUID() // 禁用序列化
.superClass("org.matrix.database.entity.BaseEntity") // 自定义实体父类
.addIgnoreColumns("create_time", "update_time"); // 忽略生成的字段
})
.templateConfig(builder -> {
builder.disable(TemplateType.CONTROLLER, TemplateType.ENTITY, TemplateType.MAPPER) // 禁用模板
.entity("template/entity.java") // 设置实体模板
.mapper("template/mapper.java"); // 设置mapper模板
})
// 使用Freemarker引擎模板
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=ldf3291369
\ No newline at end of file
package ${package.Entity};
<#list table.importPackages as pkg>
import ${pkg};
</#list>
<#if swagger>
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
</#if>
<#if entityLombokModel>
import lombok.*;
<#if chainModel>
import lombok.experimental.Accessors;
</#if>
</#if>
/**
* <p>
* ${table.comment!}
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if entityLombokModel>
@Data
@NoArgsConstructor
@AllArgsConstructor
<#if superEntityClass??>
@EqualsAndHashCode(callSuper = true)
</#if>
<#if chainModel>
@Accessors(chain = true)
</#if>
</#if>
<#if table.convert>
@TableName("${schemaName}${table.name}")
</#if>
<#if swagger>
@ApiModel(value = "${entity}对象", description = "${table.comment!}")
</#if>
<#if superEntityClass??>
public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
<#elseif activeRecord>
public class ${entity} extends Model<${entity}> {
<#elseif entitySerialVersionUID>
public class ${entity} implements Serializable {
<#else>
public class ${entity} {
</#if>
<#if entitySerialVersionUID>
private static final long serialVersionUID = 1L;
</#if>
<#-- ---------- BEGIN 字段循环遍历 ---------->
<#list table.fields as field>
<#if field.keyFlag>
<#assign keyPropertyName="${field.propertyName}"/>
</#if>
<#if field.comment!?length gt 0>
<#if swagger>
@ApiModelProperty("${field.comment}")
<#else>
/**
* ${field.comment}
*/
</#if>
</#if>
<#if field.keyFlag>
<#-- 主键 -->
<#if field.keyIdentityFlag>
@TableId(value = "${field.annotationColumnName}", type = IdType.AUTO)
<#elseif idType??>
@TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
<#elseif field.convert>
@TableId("${field.annotationColumnName}")
</#if>
<#-- 普通字段 -->
<#elseif field.fill??>
<#-- ----- 存在字段填充设置 ----->
<#if field.convert>
@TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill})
<#else>
@TableField(fill = FieldFill.${field.fill})
</#if>
<#elseif field.convert>
@TableField("${field.annotationColumnName}")
</#if>
<#-- 乐观锁注解 -->
<#if field.versionField>
@Version
</#if>
<#-- 逻辑删除注解 -->
<#if field.logicDeleteField>
@TableLogic
</#if>
private ${field.propertyType} ${field.propertyName};
</#list>
<#------------ END 字段循环遍历 ---------->
<#if !entityLombokModel>
<#list table.fields as field>
<#if field.propertyType == "boolean">
<#assign getprefix="is"/>
<#else>
<#assign getprefix="get"/>
</#if>
public ${field.propertyType} ${getprefix}${field.capitalName}() {
return ${field.propertyName};
}
<#if chainModel>
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
<#else>
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
</#if>
this.${field.propertyName} = ${field.propertyName};
<#if chainModel>
return this;
</#if>
}
</#list>
</#if>
<#if entityColumnConstant>
<#list table.fields as field>
public static final String ${field.name?upper_case} = "${field.name}";
</#list>
</#if>
<#if activeRecord>
@Override
public Serializable pkVal() {
<#if keyPropertyName??>
return this.${keyPropertyName};
<#else>
return null;
</#if>
}
</#if>
<#if !entityLombokModel>
@Override
public String toString() {
return "${entity}{" +
<#list table.fields as field>
<#if field_index==0>
"${field.propertyName}=" + ${field.propertyName} +
<#else>
", ${field.propertyName}=" + ${field.propertyName} +
</#if>
</#list>
"}";
}
</#if>
}
package ${package.Mapper};
import ${package.Entity}.${entity};
import ${superMapperClassPackage};
<#if mapperAnnotation>
import org.apache.ibatis.annotations.Mapper;
</#if>
/**
* <p>
* ${table.comment!} Mapper 接口
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if mapperAnnotation>
@Mapper
</#if>
<#if kotlin>
interface ${table.mapperName} : ${superMapperClass}<${entity}>
<#else>
@Repository
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {
}
</#if>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论