项目介绍
JeecgBoot 是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发! JeecgBoot 引领新的低代码开发模式(OnlineCoding-> 代码生成-> 手工MERGE), 帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高效率,节省研发成本,同时又不失灵活性!
当前版本:v2.4 | 2020-12-01
源码下载
技术文档
- 技术官网: http://www.jeecg.com
- 在线演示:http://boot.jeecg.com
- 技术文档:http://doc.jeecg.com
- 常见问题: http://jeecg.com/doc/qa
- 微服务入门视频: https://www.bilibili.com/video/BV1sZ4y1G7LL
升级日志
此版本重构很大,重点升级了微服务模块,完善了微服务所需的各个组件,实现了微服务方案落地( 新版可一秒变微服务); 同时代码生成器也做了重点升级,更加智能; 另外后台所有请求统一了前缀,代码重构较大、 前端代码目录和启动模式也做了较大修改, 所以升级会出现不兼容情况,请注意!!! 单体切换为微服务文档 2.4+ http://doc.jeecg.com/2043906
微服务升级
- 升级SpringCloud到Hoxton.SR8版本
- 升级SpringCloudAlibaba到2.2.3.RELEASE版本。
- 提供更简单的微服务和单体切换机制,1秒切换。
- 提供丰富的启动Starter:xxl-job分布式定时任务、Redisson分布式锁、rabbitmq消息队列、消息总线等
- 路由网关升级:支持三种模式加载路由配置(yml、nacos、database)
- 路由网关升级:支持熔断/降级/限流全局配置
- 配置中心升级:默认采用nacos作为配置中心,简化配置
- 提供服务监控模块
- 提供微服务示例代码模块
- 路由配置界面换了新界面,操作更方便
代码生成器升级
- 支持默认值生成
- 支持高级查询的生成
- 支持禁用状态(只读)生成
- 支持上传图片和上传文件控制数量
- 支持表单列数设置生成
- 默认单表、一对多、树支持详情页面的生成
- Online popup支持翻页多选
- 支持开关控件的生成
Online低代码升级
- Online报表支持合计功能
- Online报表支持多表头设置
- Online表单导出支持高级查询
- Online表单同步数据库,支持数据库密码加密
- Online表单上传文件图片控件,支持上传个数设置
- Popup组件,支持编码方式传递动态参数
- Online表单功能测试,行编辑表格换成JVxeTable提升性能
- Online报表配置界面,换成JVxeTable提升性能
- Online表单恢复大组件(富文本、MD编辑器、代码编辑器)支持
- Online表单依赖JS进一步压缩变小
平台架构升级
- 前端改造成多环境配置(启动配置模式变了)
- 前端代码目录结构做了调整,代码更清晰易懂
- 在线swagger文档换为knife4j,UI更漂亮功能更强大
- 在线数据源和平台数据源,密码支持加密设置
- 第三方登录做重构,支持一个用户对应多个第三方账户
- 重构请求,system模块所有请求统一以/sys/开头,demo模块统一以/mock开头
- 系统框架中的安全漏洞问题加强
- 升级底层依赖
- springboot => 2.3.5.RELEASE
- mybatis-plus 3.3.2 => 3.4.1
- druid 1.1.17 => 1.1.22
- jwt 3.7.0 => 3.11.0
- shiro 1.5.3 => 1.7.0
- fastjson 1.2.72 => 1.2.75
- mysql-connector-java 8.0.20=>8.0.21
- dynamic-datasource-spring-boot-starter=> 3.2.0
- autopoi => 1.2.2
Issues处理
- 谷歌浏览器,JEditableTable输入校验提示框位置偏移 #2005
- 同步数据库,对于一些关键字的表名 实际并没有创建成功 #1977
- 选择部门弹出框超出屏幕 #1995
- 【BUG】两个online报表之间跳转。排序后排序条件未清空造成报错 #1822
- JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930
- AutoPOI(Excel工具)一对多导出needMerge 有某条数据对应数量小于2时报错 #1840
- Excel导出断点查了到的是一个date类型的字段(XXtime)没有赋值 issues/I249JF
- 一对多导出报错 issues/I1YH6B
- 省市区组件校验必填配置无效 #1902
- Long类型精度丢失问题 issues/I24KXI
- online下拉多选框,搜索时只字典code进行搜索不能通过字典text搜索 issues/I1WMHB
- 组件 JSelectDepart.vue不是默认id时新内容编辑问题 issues/I247X2
- 控件默认值是“#{sysUserName}”,但是功能测试时控件没有默认值issues/I1QEMS
- ERP模板界面,如果超时,点击重新登录,无法跳转到登录界面issues/I1PQ0W
- 在线表单开发中数据表的某一字段的默认值设为#{sysUserName}时,无法获取到值。issues/1639
- 控件默认值#{sysUserName}无法显示issues/1544
- Online表单开发,点击“新增”按钮,是否树:选择是,页面控制台报错 issues/I1BHXG
- 2.2.1的ERP模板不可用 issues/I1OAM9
- 关于在线开发中的表单开发和报表配置的问题issuse/I1NV8M
- Bug:2.2.1版本 Online排序功能失效issues/1450
- 下载最新开源代码,本地测试,online表单开发,勾上“是否排序”,页面无排序功能issues/I1N6Z1
- controller方法参数列表中带有HttpServletRequest类型参数,执行完成后,保存日志报错issues/1394
- Bug:如果请求参数有request,@AutoLog自动日志 会报异常issues/1413
- radis缓存未更新 导致 修改主表,子表关联数据未更新issues/1436
- 登录登出日志没有记录人员issues/I1NBZO
- Online表单开发,建议增加时间控件issues/1362
- online前端模板变量有误issues/1470
- 内嵌子表单显示字段越多,多选框及其序号宽度也会增加issues/1442
- 建议:优化架构issues/1377
- 自定义组件,建议支持多条件查询issues/1433
- popup多选的问题issues/I1OERG
- components文件夹Table组件showPagination参数问题issues/1467
- 富文本组件在tab页面切换的时候失效issues/1462
- 定时任务调用 SysBaseApiImpl.addLog 记录日志报错issues/1472
- 建议升级shiro依赖 Apach Shiro官方披露其cookie持久化参数rememberMe加密算法存在漏洞issues/1473
- Apache Shiro权限绕过issues/1516
- 优化建议:/thirdLogin/{source}/callback 接口在签名校验失败时返回失败的标识码issues/1441
- online表单如何指定字段进行排序 或是否支持多个字段进行排序 issues/1411
- 子表怎么修改控件长度issues/I1P2UM
- JEditableTable.vue卡顿原因之一buildPropsissues/1177
- JEditableTable 用 slot的形式绑定一个JTreeSelect 如何实现双向绑定issues/984
- 谷歌浏览器开发者模式下,点击屏幕调试后左侧菜单栏收起,且折叠图标失效issues/1584
- 前端问题issues/1602
- 漏洞:其他部门可以新增管理员角色issues/1538
- jar 包上传到服务器后 autopoi 读取不到excel模版文件issues/1505
- 左侧菜单栏缩放窗口后无法显示issues/1498
- 怎么对表格和编辑表格的表头进行自定义样式修改issues/I1RBGF
- online-导入数据库表issues/I1R43G
- 顶部导航,偶尔会无法显示收起按钮issues/I1FKIP
- side menu响应式有bugissues/1619
- 高级查询构造器条件值是下拉框并且下拉框项目较多时检错报错issues/1517
- 自定义控件: j-image-upload 问题issues/I1PRAE
- 数据权限为,单位A到Z的人员只能增删查改自己单位的录入的数据,单位A到Z的上级甲可以查看单位A的数据并修改。sys_org_code会更新到更新人所属部门issues/I1PRTU
- 支持自定义sql 查询条件 引入#{sys_user_code} 等用户查询条件 能否匹配上权限数据issues/1547
- 配置数据权限为包含时,条件为多个时,sql语句报错issues/1541
- 【bug】postgresql 查看已删除用户类型错误issues/1642
- 前端切换标签不会保存原有状态及数据issues/1369
- 导出excel实体反射,时间格式转换错误issues/1573
- 表单开发页面bugissues/I1RMJA
- 加入多租户管理后数据表无法正常更新issues/1640
- 表单主附表设计issues/1481
- 配置字段href,跳转页面issues/I1QP0Y
- excel中的数据使用函数计算的列导入报错 Cannot get a text value from a numeric formula cell.issues/I1QDHN
- 如果进行在线表单开发的一对多对多的设计?issues/I1PEB2
- 登录页面错别字issues/993
- 在线文档中不能支持对List的入参 issues/1246
- online表单开发 填写表明时只要数据库中有一个库中存在这个表就会提示表名已存在issues/I1TWWK
- online 表单开发 表明已经存在issues/I1TWOO
- Online表单开发,普通同步报错issues/1565
- Online表单开发(表名已存在)issues/1665
- 前端页面放开个人页后console报错issues/1577
- 跨域问题issues/I1TAAP
- eidtTable的值改变事件issues/I1N3H1
- 2.2.1版本bug,默认主题父子表生成的代码,如果先点击编辑,后点击新增,新增页面明细上会有之前编辑页面上的数据issues/1454
- JS增强获取表单字段为undefinedissues/1388
- 表格合计功能bugissues/1399
- radis缓存未更新 导致 修改主表,子表关联数据未更新issues/1436
- JSelectBizComponent 组件存在bugissues/1425
- online表单下拉选择,校验字段,字典Table 写上where条件后,在线测试没问题,生成代码后,出现sql注入问题issues/1423
- JEditableTable样式问题issues/I1LNK6
- Result.okissues/1487
- 隶属多个部门,登录页面输入正确,点击登录后,弹出部门选择,不选,直接刷新网页,直接进入dashboard了issues/1449
- 二级下拉联动组件 一级只出来一个值issues/1652
- 多租户环境下,导入无法获取租户idissues/1647
- 消息模板建议使用freemarkderissues/1610
- online开发href跳转到其他表单对应的详情页issues/1480
- v2.2.0版本,按钮type为danger时,看不到文字issues/1286
- 后台报空指针issues/I1OAY9
- 按钮/权限issues/I1OUGU
- Online配置的菜单,怎么查看操作日志issues/I1MQLC
- JEditableTable样式问题issues/I1LNK6
- 聚合路由错误issues/1444
- 数据字典项 Redis 缓存冲突issues/1522
- dictText名称解析报错,想问下这个问题如何解决,需要解析的表是单表(树)issues/1634
- 消息模板类型建议添加PushPlusissues/1611
- 怎么添加清除功能issues/I1QYF2
- JeecgBootExceptionHandler无法捕获AuthenticationExceptiony异常issues/I17UAS
- 如果是tomcat部署项目的话,系统监控-》性能监控-》tomcat信息查询不到issues/I181YO
- idea运行服务,Tomcat监控信息session值为0issues/I1C44Z
- JEditableTable帮助文档没有更新(找不到FormTypes.file)issues/I1OL4S
- edit表格加的插槽怎么做表单验证,或者自带的FormTypes.input怎么做自定义事件issues/I1OVFB
- online表单下拉选择,校验字段,字典Table 写上where条件后,在线测试没问题,生成代码后,出现sql注入问题issues/1423
- editTable使用问题issues/I1M48Q
- 登录系统之后,用户如果没有权限,会直接进入404,这个怎么能设置登录进来只能默认打开的只有首页?issues/I1O6D1
- online表单开发,生成主附表,配置菜单+auto,无权限访问(操作)issues/I1PEXA
- 实体内有多个表字典注解的时候报错,导致翻译失败issues/1534
- AutoPoi多表头导出,会多出一列空白列issues/1513
- tinymce第一次打开正常,页面切换后再切换回来内容空白且无法编辑issues/1507
- 抽屉式界面下方有一点奇怪的显示issues/1532
- 头部菜单样式,右上角图标颜色重合issues/I1RJ1Y
- 弹窗全屏组件issues/I1TL8O
- 【bug】in 类型多值查询 不适配postgresql issues/1671
- QueryGenerator.installMplus()未处理@TableField(exist = false)导致构建查询出现column "xxx" does not existissues/1680
- Online在线表单开发,在查询配置中勾选“是否启用”,将会取消选中“页面配置”中的是否查询选项issues/1669
- online表单开发功能问题issues/1654
- online开发 popup 怎么显示名称 存储IDissues/1335
- 返回值问题:this.$refs.editableTable.getValuesSync()issues/1675
- that.changeOptions在表单初始化的时候无法初始化下拉框数据issues/I1TGVX
- JAVA访问权限控制 无法使用的问题issues/1740
- online表单开发的权限控制使用报错issues/1733
- online表单开发中权限控制的勾选框没反应issues/1741
- 找不到jeecg-cloud-module在其子目录config下有两个配置文件 issues/1754
- 切换微服务后无法使用Online相关功能issues/1760
- 自定义组件-用户多选组件自定义查询条件问题issues/1718
- 缺少表结构eoa_mailbox_infoissues/I1VN0E
- 数据导出信息与列表字段控制逻辑不一致issues/I1M4FZ
- jeecg-cloud-application-beta.yml有配置重复问题issues/1775
- JPopup 是否支持动态参数?issues/1772
- Mybatis-plus的IdType配置问题issues/1789
- [popup相关]如何实现带动态参数的报表在popup中使用issues/1666
- 当进入登录页时,有一定几率出现验证码错误issues/1714
- 大屏设计下的两个示例没有样式和JSissues/1799
- online表单开发-同步数据库异常issues/I1WDT5
- 选取职务名称出现全选issues/1753
- 切换导航模式,导致菜单栏丢失issues/1763
- TableField引起的QueryGenerator.initQueryWrapper()生成sql语句where 字段没有替换issues/1750
- 登入生成token的小bugissues/I1XOVS
- 部门选择框bugissues/I1X4DT
- SYS_USERS_CACHE_JWT 缓存用户jwt,部门或人员信息变更时没有更新对应的缓存issues/I1XOD6
- 内嵌子表风格列表页面;点击加号后操作下面错位如果把操作那里的fixed:"right",注释掉就没有问题;但是锁定操作就没有了;我感觉应该能完善下issues/I1WHR0
- vue前端 /public/index.html js路径问题 (小bug)issues/1844
- 内嵌子表风格生成的代码,子表数据不显示issues/1782
- 切换tab会刷新页面issues/I1TFQT
- 拦截器冲突 ,更新失效问题issues/I1SMY7
- 内嵌子表主题(一对多) 生成 菜单 问题issues/1769
- 360浏览器兼容模式IE11内核完全进不去,一直处于加载状态issues/1862
- 路由缓存问题issues/842
- OL一对多 移除或删除附表后主表生成代码报错--表信息加载失败issues/1773
- 菜单是否缓存路由问题issues/I1Y0K6
- j-image-upload图片组件单张图片详情回显空白issues/1810
- 【popup】如何控制popup只能选择一条记录issues/1866
- 切换导航模式,导致菜单栏丢失issues/1763
- 左侧菜单栏缩放窗口后无法显示issues/1498
- 使用前端缓存keep-alive造成的bugissues/827
- 导出参数没有高级查询参数issues/1860
- 官方代码中没有找到【queryAllAuth】【queryUserAuth】相关代码issues/1879
- 模糊查询通配符问题issues/1820
- 详情时图片显示不了issues/1779
- 左侧边栏收缩,右侧界面不能上下滚动issues/1835
- 如何实现JEditableTable中的POPUP 弹窗记录多选 issues/1885
- dict_item中的item_value如果存在_字典会失效issues/1854
- 导入Excel,随便一个Excel都能被导入issues/1756
- sql注入 issues/1887
- 前端页面改变浏览器窗口大小后,菜单展开按钮失效,无法展开菜单,无法操作issues/1913
- j-image-upload控件循环图片不显示issues/1882
- 职位/部门选择器, buttons设为false,disabled为true时,还可以点击修改issues/1876
- 建议升级swagger-bootstrap-ui依赖版本issues/1856
- 按部门选择用户控件问题issues/1871
- 怎么配置测试环境和生产环境啊issues/1815
- 所有页面都设置了缓存路由,在已打开的tab中来回切换不会刷新页面,但是新打开一个tab页面,就会刷新其他已经打开的tab页面issues/I1QLKP
- 切换微服务定时任务有问题issues/1824
- 数据库同步失败issues/1945
- 系统中使用popup插件数据不刷新,需要点击查询或者刷新才可以,请问是有地方可以配置或者在哪里改?issues/1749
- 菜单收缩为图标模式时,右侧区域滚动失效 issues/1932
- 通配符问题 issues/1952
- sql server数据库,表存在判断方法有问题issues/1929
- js增强附表内置方法调用问题 issues/1819
- 切换微服务定时任务有问题issues/1824
- Online表单配置了下拉多选,将改字段作为查询条件查不到数据。issues/I23JY5
为什么选择 JeecgBoot?
开源界“小普元”超越传统商业平台。引领新低代码开发模式(OnlineCoding-> 代码生成器 -> 手工MERGE),低代码开发同时又支持灵活编码, 可以帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高开发效率,节省公司成本,同时又不失灵活性。
- 采用最新主流前后分离框架(SpringBoot+Mybatis-plus+Ant-Design+Vue),容易上手; 代码生成器依赖性低,灵活的扩展能力,可灵活实现二次开发;
- 开发效率很高,采用代码生成器,单表数据模型和一对多(父子表)、树列表等数据模型,增删改查功能自动生成,菜单配置直接使用(前端代码和后端代码都一键生成);
- 代码生成器提供强大模板机制,支持自定义模板风格。目前提供四套风格模板(单表两套、一对多两套)
- 封装完善的用户、角色、菜单、组织机构、数据字典、在线定时任务等基础功能。强大的权限机制,支持访问授权、按钮权限、数据权限、表单权限等
- 零代码在线开发能力,在线配置表单、在线配置报表、在线配置图表、在线设计表单
- 常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导入导出等),基本满足80%项目需求
- 简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能
- 集成简易报表工具,图像报表和数据导出非常方便,可极其方便的生成图形报表、pdf、excel、word等报表;
- 采用前后分离技术,页面UI精美,针对常用组件做了封装:时间、行表格控件、截取显示控件、报表组件,编辑器等等
- 查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询);
- 数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段
- 在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)
- 页面校验自动生成(必须输入、数字校验、金额校验、时间空间等);
- 提供单点登录CAS集成方案,项目中已经提供完善的对接代码
- 表单设计器,支持用户自定义表单布局,支持单表,一对多表单、支持select、radio、checkbox、textarea、date、popup、列表、宏等控件
- 专业接口对接机制,统一采用restful接口方式,集成swagger-ui在线接口文档,Jwt token安全验证,方便客户端对接
- 接口安全机制,可细化控制接口授权,非常简便实现不同客户端只看自己数据等控制
- 高级组合查询功能,在线配置支持主子表关联查询,可保存查询历史
- 提供各种系统监控,实时跟踪系统运行情况(监控 Redis、Tomcat、jvm、服务器信息、请求追踪、SQL监控)
- 消息中心(支持短信、邮件、微信推送等等)
- 集成Websocket消息通知机制
- 提供APP发布方案:
- 支持多语言,提供国际化方案;
- 数据变更记录日志,可记录数据每次变更内容,通过版本对比功能查看历史变化
- 平台UI强大,实现了移动自适应
- 平台首页风格,提供多种组合模式,支持自定义风格
- 提供简单易用的打印插件,支持谷歌、IE浏览器等各种浏览器
- 示例代码丰富,提供很多学习案例参考
- 采用maven分模块开发方式
- 支持菜单动态路由
- 权限控制采用 RBAC(Role-Based Access Control,基于角色的访问控制)
系统功能模块
系统截图
大屏数据模板
PC端
手机端
PAD端