JeecgBoot 3.1.0 版本发布,基于代码生成器的企业级低代码平台

This commit is contained in:
zhangdaiscott
2022-02-24 15:13:05 +08:00
parent 84218c7fee
commit 9a3deba51b
304 changed files with 40313 additions and 230872 deletions

View File

@ -0,0 +1,46 @@
CREATE TABLE `sys_log0` (
`id` varchar(32) NOT NULL,
`log_type` int(2) DEFAULT NULL COMMENT '日志类型1登录日志2操作日志',
`log_content` varchar(1000) DEFAULT NULL COMMENT '日志内容',
`operate_type` int(2) DEFAULT NULL COMMENT '操作类型',
`userid` varchar(32) DEFAULT NULL COMMENT '操作用户账号',
`username` varchar(100) DEFAULT NULL COMMENT '操作用户名称',
`ip` varchar(100) DEFAULT NULL COMMENT 'IP',
`method` varchar(500) DEFAULT NULL COMMENT '请求java方法',
`request_url` varchar(255) DEFAULT NULL COMMENT '请求路径',
`request_param` longtext DEFAULT NULL COMMENT '请求参数',
`request_type` varchar(10) DEFAULT NULL COMMENT '请求类型',
`cost_time` bigint(20) DEFAULT NULL COMMENT '耗时',
`create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `index_table_userid` (`userid`) USING BTREE,
KEY `index_logt_ype` (`log_type`) USING BTREE,
KEY `index_operate_type` (`operate_type`) USING BTREE,
KEY `index_createtime` (`create_time`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='系统日志表';
CREATE TABLE `sys_log1` (
`id` varchar(32) NOT NULL,
`log_type` int(2) DEFAULT NULL COMMENT '日志类型1登录日志2操作日志',
`log_content` varchar(1000) DEFAULT NULL COMMENT '日志内容',
`operate_type` int(2) DEFAULT NULL COMMENT '操作类型',
`userid` varchar(32) DEFAULT NULL COMMENT '操作用户账号',
`username` varchar(100) DEFAULT NULL COMMENT '操作用户名称',
`ip` varchar(100) DEFAULT NULL COMMENT 'IP',
`method` varchar(500) DEFAULT NULL COMMENT '请求java方法',
`request_url` varchar(255) DEFAULT NULL COMMENT '请求路径',
`request_param` longtext DEFAULT NULL COMMENT '请求参数',
`request_type` varchar(10) DEFAULT NULL COMMENT '请求类型',
`cost_time` bigint(20) DEFAULT NULL COMMENT '耗时',
`create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `index_table_userid` (`userid`) USING BTREE,
KEY `index_logt_ype` (`log_type`) USING BTREE,
KEY `index_operate_type` (`operate_type`) USING BTREE,
KEY `index_createtime` (`create_time`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='系统日志表';

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-cloud-test-shardingsphere</artifactId>
<dependencies>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-starter-shardingsphere</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,86 @@
package org.jeecg.modules.test.sharding.algorithm;
import org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;
import org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
import org.apache.shardingsphere.sharding.api.sharding.standard.StandardShardingAlgorithm;
import java.util.Collection;
import java.util.Properties;
/**
* 用于处理使用单一键
* 根据分片字段的值和sharding-count进行取模运算
* SQL 语句中有>>=, <=<=IN 和 BETWEEN AND 操作符,都可以应用此分片策略。
*
* @author zyf
*/
public class StandardModTableShardAlgorithm implements StandardShardingAlgorithm<Integer> {
private Properties props = new Properties();
/**
* 用于处理=和IN的分片
*
* @param collection 目标分片的集合(表名)
* @param preciseShardingValue 逻辑表相关信息
* @return
*/
@Override
public String doSharding(Collection<String> collection, PreciseShardingValue<Integer> preciseShardingValue) {
for (String name : collection) {
Integer value = preciseShardingValue.getValue();
//根据值进行取模,得到一个目标值
if (name.indexOf(value % 2+"") > -1) {
return name;
}
}
throw new UnsupportedOperationException();
}
/**
* 用于处理BETWEEN AND分片如果不配置RangeShardingAlgorithmSQL中的BETWEEN AND将按照全库路由处理
*
* @param collection
* @param rangeShardingValue
* @return
*/
@Override
public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Integer> rangeShardingValue) {
return collection;
}
/**
* 初始化对象的时候调用的方法
*/
@Override
public void init() {
}
/**
* 对应分片算法sharding-algorithms的类型
*
* @return
*/
@Override
public String getType() {
return "STANDARD_MOD";
}
@Override
public Properties getProps() {
return this.props;
}
/**
* 获取分片相关属性
*
* @param properties
*/
@Override
public void setProps(Properties properties) {
this.props = properties;
}
}

View File

@ -0,0 +1,49 @@
package org.jeecg.modules.test.sharding.controller;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.test.sharding.entity.ShardingSysLog;
import org.jeecg.modules.test.sharding.service.IShardingSysLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
/**
* @Description: 分库分表测试
* @author: zyf
* @date: 2022/01/24
* @version: V1.0
*/
@Slf4j
@Api(tags = "分库分表测试")
@RestController
@RequestMapping("/sharding/")
public class JeecgShardingDemoController extends JeecgController<ShardingSysLog, IShardingSysLogService> {
@Autowired
private IShardingSysLogService shardingSysLogService;
/**
* 添加
* @return
*/
@PostMapping(value = "/add")
@AutoLog(value = "分库分表添加")
@ApiOperation(value = "分库分表添加", notes = "分库分表添加")
public Result<?> add() {
for (int i = 0; i < 10; i++) {
ShardingSysLog shardingSysLog = new ShardingSysLog();
shardingSysLog.setLogContent("jeecg");
shardingSysLog.setLogType(i);
shardingSysLog.setOperateType(i);
shardingSysLogService.save(shardingSysLog);
}
return Result.OK();
}
}

View File

@ -0,0 +1,109 @@
package org.jeecg.modules.test.sharding.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 系统日志表
* </p>
*/
@Data
@TableName("sys_log")
public class ShardingSysLog implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
private String id;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 耗时
*/
private Long costTime;
/**
* IP
*/
private String ip;
/**
* 请求参数
*/
private String requestParam;
/**
* 请求类型
*/
private String requestType;
/**
* 请求路径
*/
private String requestUrl;
/**
* 请求方法
*/
private String method;
/**
* 操作人用户名称
*/
private String username;
/**
* 操作人用户账户
*/
private String userid;
/**
* 操作详细日志
*/
private String logContent;
/**
* 日志类型1登录日志2操作日志
*/
@Dict(dicCode = "log_type")
private Integer logType;
/**
* 操作类型1查询2添加3修改4删除,5导入6导出
*/
@Dict(dicCode = "operate_type")
private Integer operateType;
}

View File

@ -0,0 +1,15 @@
package org.jeecg.modules.test.sharding.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.test.sharding.entity.ShardingSysLog;
/**
* @Description: 系统日志表 Mapper 接口
* @author: zyf
* @date: 2022/01/24
* @version: V1.0
*/
public interface ShardingSysLogMapper extends BaseMapper<ShardingSysLog> {
}

View File

@ -0,0 +1,5 @@
<?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.jeecg.modules.demo.sharding.mapper.ShardingSysLogMapper">
</mapper>

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.test.sharding.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.test.sharding.entity.ShardingSysLog;
/**
* @Description: 系统日志表 服务类
* @author: zyf
* @date: 2022/01/24
* @version: V1.0
*/
public interface IShardingSysLogService extends IService<ShardingSysLog> {
}

View File

@ -0,0 +1,19 @@
package org.jeecg.modules.test.sharding.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.test.sharding.entity.ShardingSysLog;
import org.jeecg.modules.test.sharding.mapper.ShardingSysLogMapper;
import org.jeecg.modules.test.sharding.service.IShardingSysLogService;
import org.springframework.stereotype.Service;
/**
* <p>
* 系统日志表 服务实现类
* </p>
*/
@Service
@DS("sharding")
public class ShardingSysLogServiceImpl extends ServiceImpl<ShardingSysLogMapper, ShardingSysLog> implements IShardingSysLogService {
}

View File

@ -0,0 +1,42 @@
spring:
shardingsphere:
props:
sql-show: true
datasource:
ds0:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/jeecg-boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
type: com.alibaba.druid.pool.DruidDataSource
password: root
names: ds0
# 规则配置
rules:
sharding:
# 配置绑定表,每一行为一组
binding-tables: sys_log
# 分布式序列算法配置
key-generators:
snowflake:
type: SNOWFLAKE
props:
worker-id: 123
# 分片算法配置
sharding-algorithms:
table-classbased:
props:
strategy: standard
algorithmClassName: org.jeecg.modules.test.sharding.algorithm.StandardModTableShardAlgorithm
type: CLASS_BASED
tables:
# 逻辑表名称
sys_log:
#配置具体表的数据节点
actual-data-nodes: ds0.sys_log$->{0..1}
# 分表策略
table-strategy:
standard:
# 分片算法名称
sharding-algorithm-name: table-classbased
# 分片列名称
sharding-column: log_type