背景
- 经过囫囵吞枣的学习若依框架,对于ruoyi-framework,common,安全,代码生成等模块都看了一圈,剩余的调度模块,这个暂时不深入,剩余的是ruoyi-system,就是用mybatis完成的,接口以及接口的服务实现,ruoyi-admin是controller接口,前端来调用;再就是ruiyi-ui vue2.6版本的。小白入门(-)to(九) 相关的,自行查阅。
动手构建机构管理
数据库设计
CREATE TABLE Orgs (
Id varchar(245) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主键ID',
ParentId varchar(245) CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '上级机构',
Type varchar(245) CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '机构类型',
Name varchar(245) CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '机构名称',
Code varchar(245) CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '机构代码',
Leader varchar(245) CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '机构领导',
PhonNumber varchar(245) CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '机构电话',
IsLegalPerson char(1) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '0' COMMENT '是否法人机构(0否 1是)',
Picture varchar(245) CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '机构图片地址',
del_flag char(1) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
create_by varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '创建者',
create_time datetime NULL DEFAULT NULL COMMENT '创建时间',
update_by varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '更新者',
update_time datetime NULL DEFAULT NULL COMMENT '更新时间',
remark varchar(500) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (Id) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '用户信息表' ROW_FORMAT = Compact;
SET FOREIGN_KEY_CHECKS = 1;
需要注意,这里有不少坑,用的mysql数据库
Id 不是自增的
数据库的字段命名是Pascal格式
如果是tree表,或者主子表,注意看文档
生成代码
- 创建数据库以后,把选择数据表导入,然后编辑字段的一些属性,生成代码zip包。
运行sql
-- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('机构信息', '3', '1', 'orgs', 'system/orgs/index', 1, 0, 'C', '0', '0', 'system:orgs:list', '#', 'admin', sysdate(), '', null, '机构信息菜单');
-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('机构信息查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'system:orgs:query', '#', 'admin', sysdate(), '', null, '');
- 生成对应的菜单,以及页面上的按钮。
Copy文件到对应目录
- 这个操作基本上都是比较顺畅,把对应的java文件,js文件,等等copy对应目录,编译不会有错。
运行
- 运行后台程序,运行前端程序,一切可以,以下是遇到的一些问题:
- 新增有问题,如果id不是自增,int型的,比如
@Override
public int insertOrgs(Orgs orgs)
{
orgs.setCreateTime(DateUtils.getNowDate());
orgs.setType("内部机构");
orgs.setId(new GUID().toString());
return orgsMapper.insertOrgs(orgs);
}
- 另外大坑就是 数据库的命名,是驼峰命名,引发一系列的问题,比如restful 返回的都是驼峰,可是前端直接显示是数据库真实命名(或者若依代码加个处理)等等吧。当然,可能是没有认真读文档的原因,所以砍柴不误磨刀功。
- 这个时候如果各类异常,去看若依的输出,以及全局异常处理,不行直接跟踪代码。
- 把生成的前端代码copy到若依vue3下是不work的。
总结
总体来讲,磕磕碰碰的完成一些功能,不会有太大的问题,java小白就能基本来做一些体力活了。下一步,还需要深入一些常用的类库,以及稍微高级的用法。这个小白系列,暂时告一段落,大约历时2周时间,真正用上2-3天的时间是有的,所以大部分人员一周掌握基本的内容不会有问题的。
若依框架跑起来,Java小白入门(一)
SpringBoot不求甚解,Java小白入门(二)
注解的理解、使用、原理,Java小白入门(三)
若依common模块解读,Java小白入门(四)
切面编程的理解和使用,Java小白入门(五)
若依framework模块解读,Java小白入门(六)
若依generator模块解读,Java小白入门(七)
常见安全概念澄清,Java小白入门(八)
Spring Security及若依安全实现,Java小白入门(九)