2024-03-26 16:15:28 +08:00
2023-02-21 11:55:30 +08:00
2021-08-23 10:04:51 +08:00
2021-08-23 10:04:51 +08:00
2021-08-23 10:04:51 +08:00
2021-08-23 10:04:51 +08:00
2021-08-23 10:04:51 +08:00
2021-08-23 10:04:51 +08:00

jero-boot 低代码开发平台(青春版)

===============

当前最新版本: 2.4.2(发布日期:20210126
青春版修改内容请看第五点和第六点

后端技术架构

  • 基础框架:Spring Boot 2.3.5.RELEASE

  • 持久层框架:Mybatis-plus 3.4.1

  • 安全框架:Apache Shiro 1.7.0Jwt 3.11.0

  • 数据库连接池:阿里巴巴Druid 1.1.22

  • 缓存框架:redis

  • 日志打印:logback

  • 其他:fastjsonpoiSwagger-uiquartz, lombok(简化代码)等。

开发环境

  • 语言:Java 8

  • IDE(JAVA) Eclipse安装lombok插件 或者 IDEA

  • 依赖管理:Maven

  • 数据库:MySQL5.7+ & Oracle 11g

  • 缓存:Redis

技术文档

专项文档

初始管理员账户密码

账户: admin
密码: 123456

一、查询过滤器用法

QueryWrapper<?> queryWrapper = QueryGenerator.initQueryWrapper(?, req.getParameterMap());

代码示例:


 @GetMapping(value = "/list")
 public Result<IPage<JeroDemo>> list(JeroDemo jeroDemo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, 
                                      @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
   HttpServletRequest req) {
  Result<IPage<JeroDemo>> result = new Result<IPage<JeroDemo>>();
  
  //调用QueryGenerator的initQueryWrapper
  QueryWrapper<JeroDemo> queryWrapper = QueryGenerator.initQueryWrapper(jeroDemo, req.getParameterMap());
  
  Page<JeroDemo> page = new Page<JeroDemo>(pageNo, pageSize);
  IPage<JeroDemo> pageList = JeroDemoService.page(page, queryWrapper);
  result.setSuccess(true);
  result.setResult(pageList);
  return result;
 }

  • 查询规则 (本规则不适用于高级查询,高级查询有自己对应的查询类型可以选择 )
查询模式 用法 说明
模糊查询 支持左右模糊和全模糊 需要在查询输入框内前或后带*或是前后全部带*
取非查询 在查询输入框前面输入! 则查询该字段不等于输入值的数据(数值类型不支持此种查询,可以将数值字段定义为字符串类型的)
> >= < <= 同取非查询 在输入框前面输入对应特殊字符即表示走对应规则查询
in查询 若传入的数据带,(逗号) 则表示该查询为in查询
多选字段模糊查询 上述4 有一个特例,若某一查询字段前后都带逗号 则会将其视为走这种查询方式 ,该查询方式是将查询条件以逗号分割再遍历数组 将每个元素作like查询 用or拼接,例如 现在name传入值 ,a,b,c, 那么结果sql就是 name like '%a%' or name like '%b%' or name like '%c%'

三、代码生成器

功能说明: 一键生成的代码(包括:controller、service、dao、mapper、entity、vue

四、编码排重使用示例

重复校验效果: 输入图片说明

1.引入排重接口,代码如下:

import { duplicateCheck } from '@/api/api'

2.找到编码必填校验规则的前端代码,代码如下:

<a-input placeholder="请输入编码" v-decorator="['code', validatorRules.code ]"/>

code: {
            rules: [
              { required: true, message: '请输入编码!' },
              {validator: this.validateCode}
            ]
          }

3.找到rules里validator对应的方法在哪里,然后使用第一步中引入的排重校验接口.
以用户online表单编码为示例,其中四个必传的参数有:

  {tableName:表名,fieldName:字段名,fieldVal:字段值,dataId:表的主键},

具体使用代码如下:

    validateCode(rule, value, callback){
        let pattern = /^[a-z|A-Z][a-z|A-Z|\d|_|-]{0,}$/;
        if(!pattern.test(value)){
          callback('编码必须以字母开头,可包含数字、下划线、横杠');
        } else {
          var params = {
            tableName: "onl_cgreport_head",
            fieldName: "code",
            fieldVal: value,
            dataId: this.model.id
          };
          duplicateCheck(params).then((res)=>{
            if(res.success){
             callback();
            }else{
              callback(res.message);
            }
          })
        }
      }

6.访问后台项目(注意要开启swagger)

    http://localhost:8080/jero-boot/doc.html

五 精简功能

  1. 去除了Online代码生成功能的sql,代码,配置文件
    jero-boot-base-generater模块 和 jero-boot-base-generater-core模块
  2. 去除了spring cloud相关的代码和依赖
  3. 去除了demo模块的内容
  4. 去除了多租户模块功能
  5. 把jero-system-local-api模块改为jero-boot-base-api模块
    删除jero-system-cloud-api模块

六 新增功能

  1. 集成p6spy sql打印依赖

    • 数据库url和驱动改为p6spy
    • 注释了yml文件里mybatis-plus的sql打印
    • 增加了spy.properties配置文件
  2. 增加@DictPoint注解(会查找返回值中的@Dict返回字典数据) 使用方法如下:

    @DictPoint
    @GetMapping(value = "/a")
    public Result<SysMessage> a() {
    
    }
    
  3. 账号和密码提示信息改为"登录失败,用户名或密码错误!"

  4. 验证码过期时间改为5分钟

  5. 指定生成的jar包名
    pom.xml

     <build>
       <finalName>jero-boot</finalName>
     </build>
    
  6. 增加xss过滤,cors过滤,html过滤,sql过滤
    webConfig
    xss过滤
    cors过滤
    html过滤
    sql过滤
    在jero-boot-base-core模块com.jero.config.filter路径下

  7. @Valid相关

    • 增加全局处理@Valid验证异常
      在jero-boot-base-core模块com.jero.common.exception路径下
      JeroBootExceptionHandler
    /**
    * get方法使用BindException接收
    */
    @ExceptionHandler(BindException.class)
    @ResponseBody
    public Result<?> handleBindException(BindException e) {
    log.error(e.getMessage(), e.getBindingResult().getFieldError().getDefaultMessage());
    return Result.error(e.getBindingResult().getFieldError().getDefaultMessage());
    }
    
    /**
    * post方法使用MethodArgumentNotValidException接收
    */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public Result<?> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
    log.error(e.getMessage(),e.getBindingResult().getFieldError().getDefaultMessage());
    return Result.error(e.getBindingResult().getFieldError().getDefaultMessage());
    }
    
    • 增加手动校验方法
      ValidUtil.validate()
      使用情景,当想要校验一个对象的参数是否符合规则时,随时随地都可以调用:
    public Result<SysUser> add(@RequestBody JSONObject jsonObject) {
      Result<SysUser> result = new Result<SysUser>();
      String selectedRoles = jsonObject.getString("selectedroles");
      String selectedDeparts = jsonObject.getString("selecteddeparts");
      SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class);
      ValidUtil.validate(user);
    
  8. 修改重复校验工具的校验规则DuplicateCheckController

    • 增加了一个混淆表sys_confusion 参数有
    • 表明 字段名 混淆码
      table_name field_name confusion_code
    • 根据传入的混淆码获取表名和字段名,然后重复校验
S
Description
No description provided
Readme
47 MiB
Languages
Java 99.9%