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
    评论
MyBatis-Plus是一个Java持久层框架,它在MyBatis的基础上提供了更加便捷和强大的功能。LambdaQueryWrapperMyBatis-Plus中的一个查询条件构造器,它可以通过Lambda表达式来编写查询条件,使得代码更加简洁和易读。 使用LambdaQueryWrapper可以按照以下步骤进行: 1. 导入相关的依赖:在项目的pom.xml文件中添加MyBatis-Plus的依赖。 2. 创建LambdaQueryWrapper对象:通过LambdaQueryWrapper的构造方法创建一个查询条件构造器对象。 3. 编写查询条件:使用LambdaQueryWrapper对象的方法来编写查询条件。可以使用Lambda表达式来指定查询字段、条件和关联关系等。 4. 执行查询操作:调用MyBatis-Plus提供的相应方法执行查询操作,如selectList、selectOne等。 下面是一个简单的示例代码,演示如何使用LambdaQueryWrapper进行查询: ```java import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; importimport com.example.demo.entity.User; import com.example.demo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> getUserListByAge(int age) { LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(User::getAge, age); return userMapper.selectList(queryWrapper); } } ``` 在上面的代码中,我们首先导入了LambdaQueryWrapperWrappers类。然后,在getUserListByAge方法中,我们创建了一个LambdaQueryWrapper对象queryWrapper,并使用eq方法指定了查询条件,即查询年龄等于指定值的用户记录。最后,调用userMapper的selectList方法执行查询操作,并返回查询结果。 这只是LambdaQueryWrapper的一个简单示例,你可以根据实际需求使用其他方法和条件来编写更复杂的查询条件。同时,MyBatis-Plus还提供了很多其他的功能和特性,你可以查阅官方文档来了解更多详情。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值