MyBatis-plus LambdaQueryWrapper的使用

package com.dnui.reggie.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 员工实体类
 */

@Data
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    private String username;

    private String name;

    private String password;

    private String phone;

    private String sex;

    private String idNumber;//驼峰命名,环境搭建时候已经把id_number变成idNumber

    private Integer status;

    private LocalDateTime createTime;//驼峰命名,环境搭建时候已经把id_number变成idNumber

    private LocalDateTime updateTime;//驼峰命名,环境搭建时候已经把id_number变成idNumber

    @TableField(fill = FieldFill.INSERT)
    private Long createUser;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;

}

假设我们现在有一个实体类员工表,想通过这张表实现校验用户名和密码功能。

在controller中我们应该这样操作:

首先,为了安全起见应该先把得到的密码进行加密:

String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());

用MyBatis中的LambdaQueryWrapper方法进行查询操作:

LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getUsername, employee.getUsername());
        Employee emp = employeeService.getOne(queryWrapper);

其中username在数据库中已设置唯一性约束。

其中queryWrapper.eq 等同于着select * from student where name = '(employee.getUsername)';

第一次在项目中遇到方法引用,这里记录一下,一般通过类名调用,这里直接调用了Employee实体类中的getUsername字段,把employee.getUsername传到这个字段(实体类字段相当于参数,后面的相当于值)。

Employee emp = employeeService.getOne(queryWrapper);

getOne(),这个是方法返回结果不止一条则会抛出异常,如果想默认取第一条结果,可以给这方法传第二个参数为false。

//如果没有查到
        if (emp == null) {
            return R.error("登录失败");
        }

        //密码比对
        if (emp.getPassword().equals(password)) {
            R.error("登录失败");
        }

        //密码比对成功,查询员工状态
        if (emp.getStatus() == 0) {
            R.error("该员工已被禁用");
        }
登录成功,将id放到session中
request.getSession().setAttribute("employee", emp.getId());

最后返回通用结果为success

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值