实战项目:《伴我汽车》后台管理平台开发笔记。从0到1,句句解读!

前言:

项目前端和sql都是网上公开找到的。后端是自己一点点搭建起来的。

如果你是小白:
这是小编自己在写整个过程中的记录,几乎每行代码都写了注释。希望帮到有需要的人。

如果你是大佬:
小编在写的过程中,最后确实遇到了问题。奈何才疏学浅解决不了,我已将遇到的问题记录在案,放在文章最后。还希望有缘人不吝赐教。在此谢过了。

另附源码,sql文件。方便大家学习:
仓库地址:gitee个人仓库地址

百度网盘:源码下载地址点击这里.
提取码: 6grx

项目登录账户:
登录账户:admin
密码: admin

学习建议:
我还是建议大家下载我的源码,但不建议直接用。因为里面有很多注释,方便大家阅读学习理解,可以删掉或者注释掉自己学习的部分自己写一遍。同时前端,工具类大家可以直接拿去另起项目用。另外不懂得,还有小编写的不好的,都要留言给我呀。
因为篇幅过长,我分两份博客来写。后半部分:https://blog.youkuaiyun.com/qq_44850489/article/details/109516960
效果图:
在这里插入图片描述

在这里插入图片描述

伴我汽车

产品概述:

进入系统正常查看。
开发接口注意:-
页面不需要开发并填充数据
修改了脚本等页面的内容,下次测试时清空页面缓存记录。
先测试接口是否正常响应,再联合页面测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一,创建项目

创建时引入tymeleaf mabitis, mysql。引入到.pxm文件 .properties文件,代码自动生成.xml文件。修改配置文件,解决版本不兼容等问题,运行所给的sql文件完成数据库的创建,代码自动生成后,调用查看全部数据,测试是否可以正常使用。同时搭建数据库。

二,引入前端页面

创建 在login登录页面提交后请求的Controller,返回ok。(就是先让它直接登录进去,我们先开发里面的东西)到index中。查看其中代码,将index.js中的目录替换为静态目录。测试是否可以正常显示。

三,在dto层(用于前端后端数据传递的封装对象)

创建UserDTO,封装login登录时提交的几个数据,命名要相同。

1,进入首页显示出目录后,

点击菜单管理,f12 报错信息显示传递了三个数据(从报错地址上,找到它向后端传递的字段名,然后根据字段名。我们创建相应的实体类),在页面上有搜索框,菜单id栏有排序的标识。因此在dto中创建QueryDTO,包含这五个字段。 其中排序字段命名为sort ,搜索命名为 search。排序命名为order。分页查询起始位置offset,每次查询多少条数据limit

四,打开数据库

找到sys_menu这个表,创建查询语句。成功查询之后。(这里就是手撕sql语句,看看可以查询成功不,可以了把语句放到mapper中用,不想写可以直接从我的mapper中拿)

2,在SysMenuMapper中添加查询语句。

另外封装对象就以刚刚建立的QueryDTO来封装。另外在查询语句中添加了别名 parentName,(前端是这样写的,这里我们和前端一样,就可以直接查询),所以要在此.xml最上面添加此属性<result column="parentName" property="parentName" />。还需要在包含<result>标签的<resultMap>的type对应模板中添加 此属性,get set方法可加可不加。

3,再到mapper中

SysMenuMapper里面创建对应的接口。返回类型是List<SysMenu>  (SysMenu已经给好了) 参数是 QueryDTO 就是前端要传递过来的数据,dao层就写好了。

五,开发service层

创建接口MenuService。 方法 findMenu,返回值是DataGridResult类型。

2,实现接口,实现方法,

添加@Service注解,注入mapper @Autowired,在方法内用PageHelper.offsetPage(queryDTO.getOffset(),queryDTO.getLimit()); 使分页工具类拿到分页数据。

3,然后判断getSort是否为空

sort就是我们前面查看页面向后端传递的参数名。是排序的意思。不为空将 sort设置为 menu_id 因为前端传递过来的是menuid和数据库不匹配(menu_id 是用这个字段来进行排序)。

4,将mapper传回的数据封装到DataGridResult中

 先使用list接收调用mapper层返回的数据 命名为menuBypage,然后封装数据PageInfo<SysMenu> info = new PageInfo<SysMenu>(menuByPage);

然后 long total = info.getTotal(); 拿到总数
将总数,和拿到的数据返回
DataGridResult result = new DataGridResult(total,info.getList());
然后返回数据
return result;

六,controller层

创建controller层,添加@Controller注解, 注入注解@Autowired 注入service

添加@RequestMapping(“路径”) (这里的路径就是菜单页面的js访问的路径)
@ResponseBody
调用service层的方法。 直接返回数据

七,删除操作实现

可以通过生成的代码实现单个的删除,
这里我们利用动态sql批量删除。先书写好这个动态sql,参数是list集合,然后在mapper层书写相关接口。

1.到service层书写接口,

返回类型为R,Imp写接口的实现,    
这里要防止接口的系统栏被删除,所以这里限制id<50 就返回 系统菜单,不允许删除。
删除操作 我们就添加事务注解 @Transactional(propagation = Propagation.REQUIRED) ,
然后调用mapper层方法,就是刚刚在mapper写的接口,返回参数int,如果大于零,就返回成功,不大于零就返回删除失败。

2.书写controller层,

先找到页面删除时请求的接口。然后写到@RequestMapping("")  写js中删除时访问的接口

在写@ResponseBody
参数里用@RequestBody来接收。

八,

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑白极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值