增删改查之员工操作

上一篇文章完成了部门管理的操作,这一文章主要实现员工的操作

        下面开始


员工管理

分页查询

思路

 

开发
  • pojo实体类

  • package com.testpeople.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.util.List;
    
    /**
     * 分页结果分装类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class PageBean {
        private Long total;//总记录数
        private List rows;//数据列表
    
    }
  • Controller层

  • @Autowired
    private EmpService empService;
    @GetMapping("/emps")
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize){
        //可以用@RequestParam注解来设置默认参数参数
        //page 默认为1
        //pageSize默认为10
    //        if (page==null) page=1;
    //        if (pageSize==null) pageSize=10;
        log.info("page:{},pageSize:{}",page,pageSize);
        //调用Service分页查询
        PageBean pageBean = empService.page(page,pageSize);
        return Result.success(pageBean);
    }
  • Service层

  • @Autowired
    private EmpMapper empMapper;
    /**
     * 实现分页
     */
    @Override
    public PageBean page(Integer page, Integer pageSize) {
        // 查询总记录数
        Long total =empMapper.count();
        // 查询当前页数据
        List<Emp> rows = empMapper.page((page-1)*pageSize, pageSize);
        return new PageBean(total,rows);
    }
  • Mapper层

  • /**
     * 查询总记录数
     * @return 记录数
     */
    @Select("select count(*) from emp")
    public Long count();
    
    /**
     * 查询员工每页记录数
     */
    @Select("select * from emp limit #{start},#{rows}")
    public List<Emp> page(Integer start,Integer rows);
    测试
  • Postman

  • 前后端联调

tips
  • 通过注解设置默认参数

  • @RequestParam(defaultCalue = "1")//设置请求参数默认值
  • 通过PageHelper插件实现分页查询

    • pom依赖

    • <!--        pagehelper插件-->
      <dependency>
          <groupId>com.github.pagehelper</groupId>
          <artifactId>pagehelper-spring-boot-starter</artifactId>
          <version>1.4.2</version>
      </dependency>
    • 修改位置

      • Service层

      • public PageBean page(Integer page, Integer pageSize) {
            //通过插件的方式实现
            //1.设置分页参数
            PageHelper.startPage(page,pageSize);
            //2.执行查询操作
            List<Emp> empList = empMapper.page();
            //3.强制转化
            Page<Emp> p = (Page<Emp>)empList;
        
            return new PageBean(p.getTotal(),p.getResult());
        }
      • Mapper层

      • /**
         *  使用pagehelper插件实现
         *  员工信息查询
         */
        @Select("select * from emp")
        public List<Emp> page();
      • 效果

        • 后端

  • 前端

    • 同上文

分页查询(条件)

思路

开发
  • Controller层

  • @Autowired
    private EmpService empService;
    @GetMapping("/emps")
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize,
                       String name, Short gender,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){
        //可以用@RequestParam注解来设置默认参数参数
        //page 默认为1
        //pageSize默认为10
    //        if (page==null) page=1;
    //        if (pageSize==null) pageSize=10;
        log.info("page:{},pageSize:{},name:{},gender:{},begin:{},end:{}",page,pageSize,name,gender,begin,end);
        //调用Service分页查询
        PageBean pageBean = empService.page(page,pageSize,name,gender,begin,end);
        return Result.success(pageBean);
    }
  • Service层

  • public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
        //通过插件的方式实现
        //1.设置分页参数
        PageHelper.startPage(page,pageSize);
        //2.执行查询操作
        List<Emp> empList = empMapper.page(name, gender, begin, end);
        //3.强制转化
        Page<Emp> p = (Page<Emp>)empList;
    
        return new PageBean(p.getTotal(),p.getResult());
    }
  • Mapper层

  • //使用XML形式
    public List<Emp> page(String name, Short gender, LocalDate begin, LocalDate end);
  • <select id="page" resultType="com.testpeople.pojo.Emp">
        select * from emp
        <where>
            <if test="name!=null and name!=''">
                name like concat('%',#{name},'%')
            </if>
            <if test="gender!=null">
                and gender = #{gender}
            </if>
             <if test="begin!=null">
                 and entrydate between #{begin} and #{end}
             </if>
             <if test="end!=null">
                 and entrydate between #{begin} and #{end}
             </if>
        </where>
    
    </select>
    测试
  • Postman

  • 前后端联调

删除员工

思路

开发
  • Controller层

  • /**
     * 删除功能
     */
    @DeleteMapping("/{ids}")
    public Result delete(@PathVariable List<Integer> ids){
        log.info("delete emp:{}",ids);
        empService.delete(ids);
        return Result.success();
    }
  • Service层

  • /**
     * 批量删除
     */
    @Override
    public void delete(List<Integer> ids) {
    
        empMapper.delete(ids);
    
    }
  • Mapper层

  • /**
     * 删除员工
     * @param ids
     */
    void delete(List<Integer> ids);
  • <!--    批量删除-->
    <delete id="delete">
        delete from emp where id in
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </delete>
测试
  • postman

  • 前后端联调

新增员工(暂时不上传头像)

思路

开发
  • Controller层
  • /**
     *新增员工
     */
    @PostMapping
    public Result save(@RequestBody Emp emp){
        log.info("save emp:{}",emp);
        empService.save(emp);
        return Result.success();
    }
  • Service层
  • 
    //新增员工
    
    
    @Override
    public void save(Emp emp) {
        //完善插入信息
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.insert(emp);
    }
  • Mapper层
  • /**
     * 添加员工
     * @param emp
     */
    @Insert("insert into emp(username,name,gender,image,job,entrydate,dept_id,create_time,update_time) " +
            "values (#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})")
    void insert(Emp emp);
    测试
  • postman

  • 前后端联调

文件上传

设置上传限制(位于application.properties中)

#配置单个文件上传大小
spring.servlet.multipart.max-file-size=10MB
#配置单个请求文件最大上传数量
spring.servlet.multipart.max-request-size=100MB

本地存储

  • Controller层

  • //本地存储
    package com.testpeople.controller;
    
    import com.testpeople.pojo.Result;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.UUID;
    
    @RestController
    @Slf4j
    public class LoadController {
    
        @PostMapping("/upload")
        public Result upload(String username, String password, MultipartFile file) throws IOException {
            log.info("文件上传:{},{},{}",username,password,file);
            // 1.将文件保存到本地
            //通过UUid生成文件名
            String fileName = UUID.randomUUID().toString() + file.getOriginalFilename().substring(file.getOriginalFilename().indexOf("."));
            //存放路径
            String path = "E:\\javaProject\\admin_web_project\\testpeople-management\\src\\main\\resources\\files\\";
            //保存文件
            file.transferTo(new File(path+ fileName));
    
            return Result.success();
        }
    
    
    
    }
  • 效果

    • postman

  • 后端

完善新增员工操作

  • 工具类(文件上传)

  • package com.testpeople.utils;
    
    import org.springframework.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.UUID;
    
    @Component
    public class FilesShow {
    
        //将文件上传到本地
        public String upload(MultipartFile file) throws IOException {
            //获取文件的输入流
            InputStream inputStream = file.getInputStream();
            //获取文件名并存储
            //通过UUid生成文件名
            String fileName = UUID.randomUUID().toString() + file.getOriginalFilename().substring(file.getOriginalFilename().indexOf("."));
            //存放路径
            String path = "E:\\javaProject\\admin_web_project\\testpeople-management\\src\\main\\resources\\files\\";
            //保存文件
            file.transferTo(new File(path+ fileName));
            //存储文件路径
            return path+ fileName;
    
        }
    
    
    }
  • controller层

  •     /**
     * 实现上传文件功能,本地存储
     * @param file
     * @return
     * @throws IOException
     */
    @PostMapping("/upload")
    public Result upload(@RequestParam("image") MultipartFile file) throws IOException {
        //日志
        log.info("文件上传:{}",file);
    
        //实现文件上传
        String url = filesShow.upload(file);
    
        //上传完成日志
        log.info("文件上传完成 url为{}",url);
    
        return Result.success(url);
    }
  • 效果

  • 前端

测试版

修改员工

查询回调

思路

开发
  • Controller层

  • /**
     * 根据id查询员工
     */
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        //日志
        log.info("根据ID查询人员  id:{}",id);
    
        Emp emp = empService.geyById(id);
    
        return Result.success(emp);
    }
  • Service层

  • /**
     * 根据ID 查询员工
     * @param id
     * @return
     */
    @Override
    public Emp geyById(Integer id) {
        return empMapper.getById(id);
    }
  • Mapper层

  • /**
     * 根据id查询员工
     * @param id
     * @return
     */
    @Select("select * from emp where id = #{id}")
    Emp getById(Integer id);
    测试
  • postman

  • 前后端联调

修改

思路

开发
  • Controller层

  •     /**
     * 修改员工
     * @param emp
     * @return
     */
    @PutMapping
    public Result update(@RequestBody Emp emp){
        //记录日志
        log.info("更新人员:{}",emp.toString());
    
        empService.update(emp);
    
        return Result.success();
    }
  • Service层

  • /**
     * 更新员工
     * @param emp
     */
    @Override
    public void update(Emp emp) {
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.update(emp);
    }
  • Mapper层

/**
 * 修改员工
 * @param emp
 */
void update(Emp emp);
  • <!--    修改员工功能-->
        <update id="update">
            update emp
            <set>
                <if test="username!=null and username != '' ">
                    username = #{username},
                </if>
                <if test="password!=null and password != '' ">
                    password = #{password},
                </if>
                <if test="name!=null and name != '' ">
                    name = #{name},
                </if>
                <if test="gender!=null">
                    gender = #{gender},
                </if>
                <if test="image!=null and image != '' ">
                    image = #{image},
                </if>
                <if test="job!=null">
                    job = #{job},
                </if>
                <if test="entrydate!=null">
                    entrydate = #{entrydate},
                </if>
                <if test="deptId!=null">
                    dept_id = #{deptId},
                </if>
                <if test="updateTime!=null">
                    update_time = #{updateTime}
                </if>
            </set>
            where id = #{id};
        </update>
测试
  • Postman

  • 前后端联调

配置文件

Properties

# application.properties

spring.application.name=testpeople-management
#mybatis?????
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testpeople?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTime
spring.datasource.username=root
spring.datasource.password=123456
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis.configuration.map-underscore-to-camel-case=true

#??????????
spring.servlet.multipart.max-file-size=100MB
#??????????????
spring.servlet.multipart.max-request-size=1000MB
  • 在配置文件中配置变量的可以通过@Value属性进行注入。

三种配置文件对比

  Yml

  • 语法介绍

  • 数据类型

    • 对象/Map集合

    • #定义对象/Map集合
      uer:
        name: 张三
        age: 18
        sex: 男
  • 数组/List/Set集合

  • #定义数组/List集合
      list:
        - 张三
        - 李四
        - java
        - springboot
  • 使用(替换application.properties)

  • #端口号
    server:
      port: 8080
    
    #
    ##定义对象/Map集合
    #uer:
    #  name: 张三
    #  age: 18
    #  sex: 男
    #
    #
    ##定义数组/List集合
    #  list:
    #    - 张三
    #    - 李四
    #    - java
    #    - springboot
    spring:
      application:
        name: testpeople-mannagement
      servlet:
        multipart:
          max-file-size: 100MB
          max-request-size: 1000MB
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/testpeople?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTime
        username: root
        password: 123456
    #mybatis配置
    mybatis:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        map-underscore-to-camel-case: true

      @ConfigurationProperties

  • 解决警告

    • 用于识别上述注解的依赖

  • 与@Value注解的对比


主要介绍了员工管理的实现

介绍并实现了文件上传到本地的功能实现(阿里云oss由于设计隐私,所以并没有编辑)

介绍几种配置文件 


以上知识,来自小编学习黑马程序员的课程。


以下是项目链接

黑马程序员项目javaWebjavaWeb开发学习仓库

  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值