我们把上面的sql复制到mysql可视化管理工具里,然后ctrl+a全选,再点击这个绿色箭头。

可以看到sql语句执行完毕

然后刷新
![](https://img-blog.csdnimg.cn/direct/239d1c18eab04104baf77f32597e6a38.png

就可以看到我们添加的两个表了

5-3,生成商品管理菜单

我们利用若依的菜单管理来创建一个商品管理的菜单

配置信息如下

点击确定后记得刷新网页,可以看到多了商品管理的一级菜单

5-4,利用若依生成前后端代码

若依的强大之处就在于根据数据表去快速的生成前后端代码。

然后我一个个编辑

但是要记住一点 good_type是主表,good是子表。

5-4-1,先编辑good商品表

基本信息

字段信息如下。
必填只需要商品名和商品价格就可以了。

图片这里要记得选用图片上传

生成信息

然后点击提交

5-4-2,编辑good_type商品分类表

基本信息

字段信息

生成信息

然后点提交。

5-4-3,主子表生成信息的对比

我们对比主表good_type和子表good生成信息的区别如下


有几点要注意
1,主子表的生成包路径要一样,生成模块名也要一样。
2,主子表的生成业务吗和生成功能名不能一样
3,主表的生成模板用 主子表 子表的生成模板用单表
4,主表的关联信息关联子表名good商品表,关联外键就是我们sql语句里的外键type_id

5-5,下载前后端代码并导入

我们前面提交后,就可以下载前后端代码了。如下图所示。

下载到桌面的压缩包,记得解压下。

5-5-1,先执行sql文件。

我们解压后的两个sql文件都要执行下,这是动态的把我们的商品管理和分类管理添加到后台的左侧菜单栏里用的。
因为我们的若依后台菜单栏都是动态注入的,所以这里要先执行下sql。执行sql用idea自带的mysql管理工具即可。

然后执行上面的sql文件,可以同时选中两个一起执行

执行完有如下打印

5-5-2,复制vue3代码到项目

为了快速的复所有的vue代码,我们只需要把vue里的文件夹全部复制,然后粘贴到vscode的src目录就行。右键src可以查看src的文件夹。

然后把解压的vue下的api和views复制到前端源码的src下。

5-5-3,复制Java代码到项目

Java代码粘贴相对简单,只需要复制解压后的main文件夹

然后粘贴到项目的admin模块下的src下

然后可以看到对应的代码已经复制到项目了

记得要重启下Java项目,才会生效奥。vue项目不用重启就可以生效了。

5-6,添加数据

我们上面Java项目重启后,记得刷新下网页
然后就可以看到我们添加的菜单了

5-6-1,添加商品分类

我们先添加商品分类试试
如添加一个水果和电子产品分类


添加商品分类的时候可以同步添加商品

点击确定后,添加的这两个商品也会到商品管理里面

只不过图片要我们重新上传下

同时我们如果删除了水果分类,对应的商品苹果和香蕉也会自动删除。这在我们sql语句里有给大家解析这句话

5-6-2,添加商品

然后再去添加商品试试,可以看到我们添加商品的时候,有一个图片上传功能。是不是感觉若依很厉害啊。

然后添加数据,点击提交时会有一个问题。

如果分类里我们直接填水果,会报错。

是因为我们数据库里存在的是分类的id而不是分类名,所以要先去分类表里找到水果分类的id,这里需要填入水果分类的id

细心的同学可能会说了,这里填水果不比填7更好吗,这是因为若依目前对这类联表查询生成代码有一定的局限性,后面我会教大家把分类这里改为下拉框,来实现分类的选择功能。就是从我们分类表里选择分类。

六,改造商品列表

我们商品列表里的类型显示的是类型id,但是对于用户来说,还是显示类型名称更友好一些。


虽然类型id和类型名是对应的,但是我们前端显示给用户类型id总觉得怪怪的,所以我们需要给用户显示类型名。所以我们这里也是要用到关联查询的。

6-1,联表查询的sql语句

我们通过抓包可以看到之前的商品列表返回数据如下

就是返回了商品good表里的所有字段,但是我们要显示类型名称,就需要再多返回一个商品分类good_type表里的type_name字段。

那么我们先来编写对应的联表查询语句

select good.*,good_type.type_name from 
good ,good_type where good.type_id = good_type.type_id;
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

我们执行上面的sql语句,就可以看到查询的结果里多了类型名。

所以我们就要借助这个sql语句来改造代码了。

6-2,新建vo类和mapper方法

我们在admin的good里的domain目录下新建vo文件夹然后再新建GoodVo类,并且要继承good表

然后在GoodVo里定义typeName用来承接类型名称

然后在GoodMapper里新建一个联表查询的方法

我们可以借助MyBatisX插件来自动生成对应的xml查询标签。接下来先教大家安装MyBatisX插件,进而提升我们的开发效率。

6-3,安装mybatis插件

可以根据自己的Mapper接口里的方法,快速的生成mybatis查表的xml文件
点击setting,然后去Plugins里搜索mybatis,安装MyBatisX

安装成功后回到我们的Mapper接口里,可以看到方法前面都会多一个小鸟的图标

有图标的就代码mapper的xml里有对应的sql语句。没有图标的甚至方法名报红色波浪线的,代码xml里还没生成对应的sql。
其实生成也很简单,选中爆红的方法名,然后按 Alt+Enter快捷键,选则下图所示的Generate statement 就可以快速生成了

可以看到对应的xml里生成了selectGoodListVo相关的xml代码

并且之前报错的方法前也有了小鸟的图标

6-4,把sql写入到mybatis的xml里

我们上面自动生成了xml标签,接下来就是把一开始的联表查询sql语句插入到xml里

select good.*,good_type.type_name from 
good ,good_type where good.type_id = good_type.type_id;
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

把上面的sql插入如下位置

注意事项:记得把sql语句最后的 : 删除了

我们写好联表查询的sql以后,还有一个问题,就是我们返回的vo类里使用的是驼峰式命名,但是sql里的使用的是下划线命名,为了保持一致,我们需要把mybatis配置文件做下修改。

修改也很简单,打开admin里的mybatis配置文件,把下面的代码注释解开就行了。

解开后如下

这里只要解开,就会自动把下划线命名改为驼峰式命名,保持字段名一样。

6-5,编写业务层代码

我们业务层主要就是对外提供的查询接口。对应代码如下图

我们也需要在这里编写和上面mapper类里一样的方法,所以把mapper层里的这个方法粘贴过来即可

选中方法名,然后按 Alt+Enter快捷键,选则下图所示的Implement method 就可以快速生成了

然后我们的GoodServiceImpl类里自动生成了如下代码

可以看到上面代码有个报错,这是我们还没有实现里面的查询代码的缘故。接下来实现代码如下

到这里我们业务层的接口和实现类就定义好了,最后我们还需要去改造GoodController

6-6,改造Controller

因为我们之前查询商品列表没有做联表查询,所以需要把商品的查询语句改造下,就是把下面的代码改造下。

我们不再用上面的单表查询,而是调用我们前面定义的联表查询。
我们把之前的注释掉,重写如下代码

到这里就全部改造好了,然后重启下Java项目。

6-7,测试验证

我们重启Java项目以后,去浏览器里刷新页面进入商品管理,然后点击下刷新

然后进行数抓包,就可以看到返回的数据里多了一个goodCount字段。

6-8,改造vue前端代码

我们查询到了商品分类id对应的分类名称了,前面Java代码实现完,我们vue前端代码只需要把之前显示的分类id改为分类名称就行了。

我们找到对应代码,只需要修改一行代码,然后保存即可

改这下面这样。


 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

给大家解释下这行代码:

这段代码是在Vue.js项目中,特别是使用Element库时,这段代码是一个定义表格列el-table-column的模板语法,具体功能如下:

综上所述,此代码段在Element UI的表格中创建了一个列,用于展示数据列表中每个项目typeName字段的值,且该列标题为“类型”,内容居中显示。当绑定的数据发生变化时,这一列的内容也会相应更新,提供给用户一个实时反映数据状态的视图。

6-9,修复搜索查询的bug

细心的同学可能会发现,做完上面的改造后,我们的搜索功能出错了。没法做搜索了。比如我们输入小,然后点击搜索没有反应。

是因为我们在mapper的xml里没有写搜索对应的模糊查询语句。

我们把对应的代码修改成下这样,然后重启项目即可。

    
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"> class="hide-preCode-box">

如,我们只搜索一个手,就可以查到包含手的商品

七,改造商品分类列表

我们上面显示商品分类列表。

假设我们有个需要,需要显示每个分类对应的商品个数,那么我们该怎么实现呢。今天就来带大家实现这个功能,随便教大家如何二开若依框架,添加自己的功能。

7-1,确定需求

我们就是要在商品分类列表返回的数据里加一个goodCount字段

之前的返回是没有这个字段的。所以就要开始我们的代码改造之旅了

7-2,新建vo类和mapper方法

我这里的qcl-admin,就是你项目里的ruoyi-admin,然后再domain里先创建一个vo文件夹,然后创建GoodTypeVo类

GoodTypeVo类代码很简单,就是定义一个我们要返回的goodCount字段,然后生成get和set方法。
然后在GoodTypeMapper接口里添加新的联表查询方法,如下

我们可以借助MyBatisX插件自动生成对应的查询标签。

上图可以看到,有图标的就是xml里有对应的sql语句。没有图标的甚至方法名报红色波浪线的,代码xml里还没生成对应的sql。
其实生成也很简单,选中爆红的方法名,然后按 Alt+Enter快捷键,选则下图所示的Generate statement 就可以快速生成了

可以看到对应的xml里生成了selectGoodTypeListVo相关的xml代码

并且之前报错的方法前也有了小鸟的图标

7-3,编写mybatis的xml文件

我们前面自动生成了xml的查询标签

然后我们需要把对应的sql语句粘贴进来的

select good_type.type_name, count(good.good_id) as good_count
from good_type left join good on good_type.type_id = good.type_id
group by good_type.type_name;
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

把上面的联表查询sql语句粘贴到xml里

有一点需要注意的:xml里的sql语句,要把最后的 ; 给删除的

删除后如下

7-4,打开mybatis注释

我们写好联表查询的sql以后,还有一个问题,就是我们返回的vo类里使用的是goodCount 驼峰式命名,但是sql里的good_count 下划线命名,为了保持一致,我们需要把mybatis配置文件做下修改。

修改也很简单,打开admin里的mybatis配置文件,把下面的代码注释解开就行了。

解开后如下

这里只要解开,就会自动把下划线命名改为驼峰式命名,保持字段名一样。

7-5,编写业务层

我们业务层主要就是对外提供的查询接口。对应代码如下图

我们也需要在这里编写和上面mapper层一样的方法,所以把mapper层里的这个方法粘贴过来即可

选中方法名,然后按 Alt+Enter快捷键,选则下图所示的Implement method 就可以快速生成了

然后我们的GoodTypeServiceImpl类里自动生成了如下代码
在这里插入图片描述
可以看到上面代码有个报错,这是我们还没有实现里面的查询代码的缘故。接下来实现代码如下

到这里我们业务层的接口和实现类就定义好了,最后我们还需要去改造GoodTypeController

7-6,改造Controller

因为我们之前查询商品类型列表没有做联表查询,所以需要把商品类型的查询语句改造下,就是把下面的代码改造下。我这里的qcl-admin,就是你若依里的ruoyi-admin,因为我改了下项目名。

我们不再用上面的单表查询,而是调用我们前面定义的联表查询。
我们把之前的注释掉,重写如下代码

到这里就全部改造好了,然后重启下Java项目。

7-7,测试验证

我们重启Java项目以后,去浏览器里刷新页面进入商品分类管理

然后进行数抓包,就可以看到返回的数据里多了一个goodCount字段。

7-8,改造前端代码

我们查询到了分类下的商品个数,前面Java代码实现完,我们vue前端代码也要加一列,来显示商品个数。

我们找到对应代码,只需要加一行代码,然后保存即可


 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

给大家解释下这行代码:

这段代码是Vue.js中Element UI框架的模板语法,用于定义一个表格列()的配置。具体说明如下:
label=“商品个数”:设置该列的标题为“商品个数”。
align=“center”:指定该列内容的水平对齐方式为居中对齐。
prop=“goodCount”:指定了该列数据的绑定属性名为goodCount,意味着这一列会显示表格数据中每个对象的goodCount属性值。
综上,此代码片段定义了一个表格列,用于展示每行数据中商品的数量,且文本居中对齐。

到这里我们就可以在分类列表里查询对应的商品个数了

6-10,修复搜索查询的bug

细心的同学可能会发现,做完上面的改造后,我们的搜索功能出错了。没法做搜索了
是因为我们在mapper的xml里没有写搜索对应的模糊查询语句。

我们添加如下代码,然后重启项目即可。

如,我们只搜索一个图,就可以查到图书

data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/m0_74825360/article/details/144399303","extend1":"pc","ab":"new"}">>
注:本文转载自blog.csdn.net的m0_74825360的文章"https://blog.csdn.net/m0_74825360/article/details/144399303"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!