栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

若依微服务框架 树表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-masterruoyi-testtargetclassesmappertestTestCategoryMapper.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里有数据的就是修改操作,没有数据的就是新增操作了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987889.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号