Springboot 瑞吉外卖项目实例总结
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
前言
经过半个多月的学习,终于把瑞吉外卖的案例完成了,因为不喜欢写博客,因此写代码过程的笔记就没进行更新,直接写一个大总结。项目大多数功能均已实现,如果有小伙伴需要的话,可以在最后的Gitee链接中进行下载。/比心
一、技术栈
后端技术:
- SpringBoot
- Mybatis Plus
前端技术
- Vue
- element ui
- axios
二、项目截图
1.员工管理
2.菜品管理
3.新增套餐
4.新增套餐
5.订单明细
6.用户首页 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ce9a57419c97497784e678af942d9a32.png#pic_center =200x400)
![在这里插入图片描述](https://img-blog.csdnimg.cn/805589308d5b4dd7b482ef2dc2936be9.png#pic_center =200x400)
三、知识点总结
1、Mybatis Plus
1.基本结构
实体类
@Data
public class User implements Serializable {
private Long id;
private String name;
}
Mapper层
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
Service层接口
@Mapper
public interface UserService extends IService<User> {
}
Service层实现类
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
controller层(通过@Resource或者@Autowired注入)
@Resource
private UserService userService;
2.使用方法通常有两种使用方式,第一种就是正常的增删改查,另一中是使用LambdaQueryWrapper限制条件来查询
增
userService.save(entity) //保存一个
userService.saveBatch(list) //批量保存
删
userService.remove(lambdaQueryWrapper) //根据LambdaQueryWrapper删除
userService.removeById(entity)
改
userService.update(entity)
userService.update(lambdaQueryWrapper)
查
userService.getById(entity)
userService.getOne(lambdaQueryWrapper)
userService.list()
userService.list(lambdaQueryWrapper)
3.LambdaQueryWrapper使用方法:
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getPhone,user.getPhone())
queryWrapper.orderByDesc() //排序
queryWrapper.like() //模糊查找
queryWrapper.apply("xxxxxx,{0}",name) //sql语句设置条件
userService.list(queryWrapper)
//自定义sql方法:
LambdaQueryWrapper<xxxDO> queryWrapper = new QueryWrapper<xxxDO>()
.select("sex, ifnull(count(id), 0) AS num, CASE WHEN sex = 1 THEN '男' WHEN sex = 0 THEN '女' ELSE '未知' END AS sexStr").lambda();
queryWrapper.eq(xxxDO::getStatus, 0);
queryWrapper.groupBy(xxxDO::getSex);
List<Map<String, Object>> mapList = getBaseMapper().selectMaps(queryWrapper);
Map<String, String> registerNumMap = new HashMap<>(mapList.size());
for (Map<String, Object> map : mapList) {
String key = String.valueOf(map.get("sexStr"));
String num = String.valueOf(map.get("num"));
registerNumMap.put(key, num);
}
4.MybatisPlus 分页插件的配置分页插件需要创建一个配置类
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}’
Controller层:
//创建分页构造器
Page<User> pageInfo = new Page<>(page,pageSize);
//创建条件构造器
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
//通过Service层使用page方法,将数据放入pageInfo中
userService.page(pageInfo,queryWrapper);
2、文件上传、下载
1.文件上传
接收参数: 使用MultipartFile和File进行文件保存方法: file.transferTo(new File(property+fileName)); 具体代码:
public R<String> upload(@RequestParam("file") MultipartFile file){
//项目相对地址
String property = System.getProperty("user.dir")+"\\src\\main\\resources\\backend\\upload\\";
File dir = new File(property);
//判断是否存在该文件夹,若不存在则新建文件夹
if (!dir.exists()){
dir.mkdir();
}
//文件原始名称
String originalFilename = file.getOriginalFilename();
//获取文件后缀
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
//使用UUID修改文件名称防止文件名重复
String fileName = UUID.randomUUID()+ suffix;
try {
file.transferTo(new File(property+fileName));
} catch (IOException e) {
e.printStackTrace();
}
return R.success(fileName);
}
2.文件下载通过文件流传输到页面
String property = System.getProperty("user.dir")+"\\src\\main\\resources\\upload\\";
//获取输入刘对象
FileInputStream inputStream = new FileInputStream(new File(property+name));
//设置传输文件类型
response.setContentType("image/jpeg");
ServletOutputStream outputStream = response.getOutputStream();
int len= 0;
byte[] bytes = new byte[1024];
while((len = inputStream.read(bytes))!=-1){
outputStream.write(bytes);
outputStream.flush();
}
//关闭资源
inputStream.close();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
3、RSET风格请求方式
4种请求方式:
- get
- post
- put
- delete
RSET风格请求方式
接收参数方法: 使用@PathVariable
@GetMapping("/{id}") //{}接收参数
public R<SetmealDto> update(@PathVariable Long id){
4、Utils工具类
1.StringUtils.isNotEmpty() 判断空2.BeanUtils.copyProperties(参数一,参数二,参数三); 参数一是被复制的数据,参数二是复制后的数据,参数三是不被复制的部分。
4、总结
此项目为初学SpringBoot的练手项目案例,知识点较少,但也可以学到一些小知识,提高代码经验。Gitee链接等我最后完善好后会放到下面,有需要的小伙伴自取。假装有个链接。
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |