前言
瑞吉外卖项目,day01帮助与总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、1.@Mapper与@Repository?
1.相同点
@Mapper和@Repository都是作用在dao层接口,使得其生成代理对象bean,交给spring 容器管理,对于mybatis来说,都可以不用写mapper.xml文件
2.不同点
@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中也就是@Repository多了一个配置扫描地址的步骤;
其中与@Repository同类的有:
创建对象的注解
@Component:可以创建任意对象.创建的对象的默认名称是类名的驼峰命名法.也可以指定对象的名称@Component(“指定名称”).
@Controller:专门用来创建控制器的对象(Servlet),这种对象可以接收用户的请求,可以返回处理结果给客户端.
@Service:专门用来创建业务逻辑层的对象,负责向下访问数据访问层,处理完毕后的结果返回给界面层.
@Repository:专门用来创建数据访问层的对象,负责数据库中的增删改查所有操作.
二、设置静态资源映射
config
WebMvcConfig
在这里插入代码片
```package com.itheima.reggie.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import java.util.WeakHashMap;
@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 设置静态资源映射
* 将静态的html文件,在url中无法访问,映射之后才可以,springboot建议的
* 是放在statci中才可以直接访问
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
log.info("开始进行静态资源映射");
}
}
## 1.引入库
代码如下(示例):
```c
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
三、登录代码
@PostMapping("/login")
public R<Employee> login (HttpServletRequest request,@RequestBody Employee employee){
//1。将页面提交的密码password进行md5加密
String password = employee.getPassword();
//密码加密
password = DigestUtils.md5DigestAsHex(password.getBytes());
//2。根据页面提交的用户名username查询数据库
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Employee::getUsername,employee.getUsername());
Employee emp = employeeService.getOne(queryWrapper);
//3。如果没有查询到则返回登陆失败结果
if (emp == null){
return R.error("登录失败");
}
//4。密码比对,如果不一致则返回登录失败结果
if (!emp.getPassword().equals(password)) {
return R.error("登录失败");
}
//5。查看员工状态,如果为已禁用状态,则返回员工已禁用结果
if (emp.getStatus() == 0){
return R.error("账号已禁用");
}
//6。登录成功,将员工id存入Session并返回登录成功结果
request.getSession().setAttribute("employee",emp.getId());
return R.success(emp);
}
注释:
```Mybatis-plus的四种lambda方式
lambada表达式,可以通过方法引用的方式来使用实体字段名的操作,避免直接写数据库表字段名时的错写名字
一。LambdaQueryWrapper<>
二。QueryWrapper<实体>.lambda()
三。Wrappers.<实体>lambdaQuery()
//2。根据页面提交的用户名username查询数据库
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Employee::getUsername,employee.getUsername());
Employee emp = employeeService.getOne(queryWrapper);
此问题的详解请跳转:https://www.cnblogs.com/cy0628/p/15147593.html
LambdaQueryWrapper的条件构造器方法对应Sql
setSqlSelect SELECT 查询字段
where WHERE 语句,拼接 + WHERE 条件
where WHERE 语句,拼接 + WHERE 条件
and AND 语句,拼接 + AND 字段=值
andNew AND 语句,拼接 + AND (字段=值)
or OR 语句,拼接 + OR 字段=值
orNew OR 语句,拼接 + OR (字段=值)
eq 等于=
allEq 基于 map 内容等于=
ne 不等于<>
gt 大于>
ge 大于等于>=
lt 小于<
le 小于等于<=
like 模糊查询 LIKE
notLike NOT LIKE模糊查询
in IN 查询
notIn NOT IN 查询
isNull NULL 值查询
isNotNull IS NOT NULL
groupBy 分组 GROUP BY
having HAVING 关键词
orderBy 排序 ORDER BY
orderAsc Asc 排序 ORDER BY
orderDesc DESC 排序 ORDER BY
exists EXISTS 条件语句
notExists NOT EXISTS 条件语句
between BETWEEN 条件语句
notBetween NOT BETWEEN 条件语句
addFilter 自由拼接 SQL
last 拼接在最后,例如:last(“LIMIT 1”)
————————————————
版权声明:本文为CSDN博主「LouisMin23」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44768683/article/details/125361065
lambda表达式详解:https://www.cnblogs.com/haixiang/p/11029639.html
Employee emp = employeeService.getOne(queryWrapper);
getOne方法来自于:Service层中
@Autowired
private EmployeeService employeeService;
自动注入进employeeService对象中实现的Iservice借口中的方法