当前位置: 首页 > news >正文

苍穹外卖学习笔记(二)

文章目录

  • 一.新增员工
  • 二.员工分页查询

一.新增员工

  1. 编写新增员工接口设计的DTO
    20240907180037
package com.sky.dto;import lombok.Data;import java.io.Serializable;@Data
public class EmployeeDTO implements Serializable {private Long id;private String username;private String name;private String phone;private String sex;private String idNumber;}
  1. controller
    /*** 新增员工** @return*/@PostMapping@ApiOperation("新增员工")public Result save(@RequestBody EmployeeDTO employeeDTO) {log.info("新增员工:{}", employeeDTO);employeeService.save(employeeDTO);return Result.success();}
  1. service
    /*** 添加员工* @param employeeDTO* @return*/void save(@RequestBody EmployeeDTO employeeDTO);
  1. serviceimpl
/*** 添加员工** @param employeeDTO* @return*/@Overridepublic void save(EmployeeDTO employeeDTO) {Employee employee = new Employee();BeanUtils.copyProperties(employeeDTO, employee);employee.setStatus(StatusConstant.ENABLE);//默认启用//生成盐byte[] salt = new byte[SALT_LENGTH];RANDOM.nextBytes(salt);employee.setSalt(Base64.getEncoder().encodeToString(salt));//对密码进行加密,默认密码为123456String password = hashPassword(PasswordConstant.DEFAULT_PASSWORD, employee.getSalt());employee.setPassword(password);//设置创建时间和更新时间employee.setCreateTime(LocalDateTime.now());employee.setUpdateTime(LocalDateTime.now());//设置创建人和更新人//XJJ TODD 2024/9/7:后期需要修改employee.setCreateUser(10L);employee.setUpdateUser(10L);employeeMapper.insert(employee);}

由于我这里将Mybatis换成了Mybatis-plus,所以Mybatis相关的代码不再描写

  1. 引入依赖
<!-- mybatisPlus 核心库 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version></dependency>
  1. 修改application.yml配置文件
# mybatis-plus配置
mybatis-plus:configuration:# 驼峰命名map-underscore-to-camel-case: true# 日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  1. 修改employee实体类,添加ID自动增长策略
package com.sky.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.time.LocalDateTime;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("employee")
public class Employee implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "id", type = IdType.AUTO)private Long id;private String username;private String name;private String password;private String phone;private String sex;private String idNumber;private Integer status;//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime updateTime;private Long createUser;private Long updateUser;private String salt;}
  1. 删除resource下的mapper包,将server中的mapper包改为继承自BaseMapper
package com.sky.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sky.dto.EmployeeDTO;
import com.sky.entity.Employee;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {}
  1. 修改启动类,增加mapper扫描区间
package com.sky;import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;@SpringBootApplication
@EnableTransactionManagement //开启注解方式的事务管理
@MapperScan("com.sky.mapper") //扫描mapper接口
@Slf4j
public class SkyApplication {public static void main(String[] args) {SpringApplication.run(SkyApplication.class, args);log.info("server started");}
}

二.员工分页查询

  1. 编写分页查询接口的DTO
package com.sky.dto;import lombok.Data;import java.io.Serializable;@Data
public class EmployeePageQueryDTO implements Serializable {//员工姓名private String name;//页码private int page;//每页显示记录数private int pageSize;}
  1. controller
 @GetMapping("/page")@ApiOperation("分页查询员工")public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO) {log.info("分页查询员工:{}", employeePageQueryDTO);employeeService.page(employeePageQueryDTO);return Result.success();}
  1. service
/*** 分页查询员工* @param employeePageQueryDTO* @return*/PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
  1. serviceimpl
 @Transactional@Overridepublic PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {// 创建分页对象Page<Employee> page = new Page<>(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());// 创建查询条件LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();// 排除姓名为null的记录queryWrapper.isNotNull(Employee::getName);// 使用like方法进行模糊查询,参数化防止SQL注入if (StringUtils.isNotBlank(employeePageQueryDTO.getName())) {queryWrapper.like(Employee::getName, employeePageQueryDTO.getName());}// 根据创建时间降序排序queryWrapper.orderByDesc(Employee::getCreateTime);// 执行分页查询Page<Employee> employeePage = employeeMapper.selectPage(page, queryWrapper);// 提取结果long total = employeePage.getTotal();List<Employee> records = employeePage.getRecords();// 返回结果return new PageResult(total, records);}

注意:使用MP分页时不要配置MP分页插件,否则会找不到对象(Mapper)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 软考系统分析师难吗?现在开始准备需要多久能考试?
  • C语言-第九章-加餐:文件位置指示器与二进制读写
  • 桂林自闭症寄宿学校:用关爱点亮未来
  • 神经网络的可解释性理论及工具
  • python如何获取html中的所有链接
  • 【Go】Go语言基本语法--注释、变量、常量
  • 算法设计与分析(整数划分问题
  • 哪些录屏工具最适合游戏录制?2024年Top4录屏工具梳理
  • Git学习尚硅谷(007 idea集成码云gitee)
  • Linux进程概念
  • vue 使用jszip,file-saver下载压缩包,自定义文件夹名,文件名打包下载为zip压缩包文件,全局封装公共方法使用。
  • Wni11 下 WSL 安装 CentOS
  • vue+el-table 可输入表格使用上下键进行input框切换
  • 【C语言】结构体超详细全讲解 (代码+万字文字+画图讲解)
  • Linux 大文件和大量小文件的复制策略
  • express + mock 让前后台并行开发
  • Linux CTF 逆向入门
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • vue-cli3搭建项目
  • 测试开发系类之接口自动化测试
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从零搭建Koa2 Server
  • 使用 Docker 部署 Spring Boot项目
  • 我的业余项目总结
  • 一个项目push到多个远程Git仓库
  • 再次简单明了总结flex布局,一看就懂...
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​决定德拉瓦州地区版图的关键历史事件
  • #、%和$符号在OGNL表达式中经常出现
  • #pragma 指令
  • #预处理和函数的对比以及条件编译
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++20) consteval立即函数
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (原)Matlab的svmtrain和svmclassify
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ****三次握手和四次挥手
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .sh 的运行
  • [.net] 如何在mail的加入正文显示图片
  • [22]. 括号生成
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法