若依微服务框架 树表CRUD 代码生成 踩坑

这两天看了一下树表的crud,然后想找个教程看看,就到网上找俩例子,然后开始我的踩坑之旅。

如下链接是我参考的,但是最根本原因还是在于建表语句!!!
若依(ruoyi)代码生成树表结构的那些坑_学废了的wyj的博客-CSDN博客_ruoyi树表若依(ruoyi)代码生成树表结构的那些坑https://blog.csdn.net/weixin_42555014/article/details/122239833?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-5-122239833-blog-107456268.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-5-122239833-blog-107456268.pc_relevant_default&utm_relevant_index=9【若依(ruoyi)】树表代码生成_sayyy的博客-CSDN博客_ruoyi树表前言若依(ruoyi): v4.3mysql:5.5.40树表代码生成前期准备已经完成:比如,ruoyi项目已经可以启动,并且可以登录。简单介绍官网: https://ruoyi.vip/代码: https://gitee.com/y_project/RuoYi需求有一个树表,如下:drop table if exists `ass_category`;create table `ass_category` ( `id` int(11) NOT NULL AUTO_INCRhttps://blog.csdn.net/sayyy/article/details/107456268

首先,我们先看一下上面俩个链接的建表语句:

CREATE TABLE `product_category` (
  `category_id` char(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分类id',
  `parent_id` char(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上级分类的编号:0表示一级分类',
  `category_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '名称',
  `level` tinyint(1) DEFAULT NULL COMMENT '分类级别:0->1级;1->2级',
  `show_status` tinyint(1) DEFAULT NULL COMMENT '显示状态:0->不显示;1->显示',
  `sort` int DEFAULT '0' COMMENT '排序',
  `icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '图标',
  `description` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '描述',
  PRIMARY KEY (`category_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='商品分类表';
drop table if exists `ass_category`;
create table `ass_category` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `parent_id` int(11) NOT NULL COMMENT '父级id',
  `name` varchar(50) NOT NULL COMMENT '名称',
  `sort` int(11) DEFAULT NULL COMMENT '排序',
  `description` varchar(200) DEFAULT NULL COMMENT '描述',
  `status` tinyint(1) DEFAULT 0 COMMENT '数据状态',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后咱们在看一下若依官方文档的建表语句:

drop table if exists sys_product;
create table sys_product (
  product_id        bigint(20)      not null auto_increment    comment '产品id',
  parent_id         bigint(20)      default 0                  comment '父产品id',
  product_name      varchar(30)     default ''                 comment '产品名称',
  order_num         int(4)          default 0                  comment '显示顺序',
  status            char(1)         default '0'                comment '产品状态(0正常 1停用)',
  primary key (product_id)
) engine=innodb auto_increment=1 comment = '产品表';

我这里测试了product_category这个表,下面给出报错信息:

### Error updating database. Cause: java.sql.SQLException: Field 'category_id' doesn't have a default value ### The error may exist in file [E:\RuoYi-Cloud-master\ruoyi-test\target\classes\mapper\test\TestCategoryMapper.xml] ### The error may involve com.ruoyi.test.mapper.TestCategoryMapper.insertTestCategory-Inline ### The error occurred while setting parameters ### SQL: insert into test_category ( parent_id, category_name, level, show_status, sort, icon, description ) values ( ?, ?, ?, ?, ?, ?, ? ) ### Cause: java.sql.SQLException: Field 'category_id' doesn't have a default value ; Field 'category_id' doesn't have a default value; nested exception is java.sql.SQLException: Field 'category_id' doesn't have a default value

卧槽,竟然说没有默认值!!!可以看一下前端表单提交的情况:

实际上插入数据时候缺少category_id这个字段,而category_id这个字段又不能为空,所以出现如下这种情况:

咱们在来看看sys_product这个表的数据插入情况,如图下

可以看到,插入数据的时候并没有加product_id这个字段。但是没有报错。这是因为有auto_increment这个关键字。

后面查阅一下auto_incrment这个关键字的含义才明白什么意思:

最后看看ass_category这个表,有auto_incrment这个关键字,但这个表插入还是报错,这是为啥呢?

我自己测试了一下,但发现没有问题,估计是楼主的ruoyi版本,前端代码的处理逻辑不一样。

这里看看我这个若依版本的前端代码:

用户点新增按钮或者修改按钮时,会有如下的操作:

 

 

另外用户在点击确定提交时,若依把新增和修改的对话写成共用的了,我也是半天没看不明白,后面发现,当点击修改操作时,拿到当前这一条记录的id,向后台发起了一次请求,然后返回这条数据对应的response.data赋值给this.form。于是当我们提交的时候,this.form里有数据的就是修改操作,没有数据的就是新增操作了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值