起因:开发新的子模块,从数据库抓起!
前言
- 从这篇博客开始记录如何在继承已有项目的基础上修改开发属于自己项目的一些思路,是记录也是督促,共勉!
- 以小见大,此文仅从子模块视角展开,希望能提供给您一些思路!
- 笔者才疏学浅,边改边总结,还是小白阶段,不足处请多指教!
- 如需看MySQL批量插入,建议目录直接跳到第四章节!!!!
前置条件
开发环境:IDEA 2018
数据库:MySQL 8.0
项目架构:SpringBoot+Vue+Hibernate
废话少说,开始!
一、了解需求
不破不立,已有项目的字段和前端显示不再适用新的项目要求,打破重组!
从数据库开整!
一问:在不了解实际项目子模块的开发流程下,如何设计子模块的数据库字段?
笔者思路:项目本来就是虚拟的环境下运行的,再考虑贴切也和真实环境有出入,所以对此不必太过纠结,主要去学习和了解整个开发的思路以及锻炼自己解决问题的能力!
二问:那如何设计子模块的字段?
笔者思路:先从项目整体出发,将整个项目模块化,这时候我用到的工具就是平板+手写笔,先复原以前项目的流程!
二、总体架构把握
例如图示,仅作参考!
因是手写,所以有点潦草!见谅~
这里仅介绍思路:
1、将总体项目拍下!
分析各个模块,然后去思考自己的模块应该怎么去设计,先将一个大的项目模块化,这样一步一步来,先想模块名称,模块设计,不会一下子感觉到那么大的心理负担,不积跬步无以至千里,一步步来!
2、关键是数据库!
不说一个子模块对应一个数据库,但是你必须找到这些模块对应的数据库表之间的关系,这样有助你了解整个项目的架构!
3、找出各数据库对应的表和字段!
必须承认这需要一定的耐心去解读代码和反复的抄写字段,但相信当这一步你最终完成后,你心里面对这个大项目的改造没那么慌啦,先把握架构!
三、子模块设计
如上所示,笔者现在需求是修改子模块库存管理,然后也已理清了该模块对应的数据库表和字段,下一步就是设计数据库表!
在自己没思路的前提下,不访问AI提供一些模块设计和字段思路!
因是介绍思路,所以具体字段不再赘述!
思路:
1、根据上文思路找到对应的数据库表
2、根据AI或者已有经验的字段思路对字段进行取舍
3、写出已有字段和设计修改新字段
在实施的过程中笔者面对新的难题,就是此表的字段和另一个表的字段相同,所以需要批量插入!
四、MySQL批量插入两表相同字段
直接上代码!
通用版
INSERT INTO 目标表(字段1,字段2,***)
SELECT 字段1,字段2,***
FROM 已有表
WHERE 条件;
实例版
INSERT INTO app_car_parking_record(good_name,category_name)
SELECT good_name,category_name
FROM app_goods_details
WHERE 1=1;
如图所示,成功!
而后我想插入其他字段又产生了新的问题,表述就是(->表示包含关系)
合作单位->超市->分类->商品
问题描述:库存与商品表联系把商品名字与分类拿过来了,但是现在想用商品分类字段为条件把合作单位和超市从另一张表拿过来,继续用上面的方法报错了!
问题描述:明明库存表有category_name字段,但是一直报错显示1054!
去查了表结构!有此字段,期间也刷新了无数次,无论是表还是库!
还是报相同的错误!于是使用查询语句继续排错!
发现上述问题应该不是字段不存在,应该是指代不清!
emmm…讲到这里很羞愧,虽说查询用了去重函数!
但是在批量插入的时候始终没找到合适的不报错的SQL语句插入!
笔者MySQL真的小白,评论区有大佬帮忙解答一下这种情况下的SQL语句到底该如何写!
但是有问题就有解决方法,大不了一行一行的填数据白,因笔者这个表中的数据真的不算多100以内,当然还是能偷懒就偷懒一点,倒也不必一行一行的对应找,这里笔者提供了折中(弱鸡版)的思路!
就是按照未查重的category_name分批次插入,哎嘿,菜鸟报道!
好心大佬欢迎评论,俺数据库真滴菜!
代码如下:
#一、插入
INSERT INTO app_car_parking_record(org_id,org_name,park_manage_id,park_manage_name)
SELECT org_id,org_name,park_manage_id,park_manage_name
FROM `app_car_manage`
WHERE app_car_manage.category_name='日用品类';
#二、找相应数据
SELECT good_name from app_car_parking_record where category_name='日用品类';
#三、统计数量
SELECT COUNT(good_name) from app_car_parking_record where category_name='日用品类';
找到对应字段!
分类插入!
以此类推!
统一执行,速度更快!
成功补全!
继而根据需求补全其他字段,完成表的初步设计!
至此子模块的数据库表的设计大概完成!
后续会持续更新,前后端如何实现渲染和正常的业务流程,点个关注不迷路!下期见!Bye~