您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页java实习日记(3)

java实习日记(3)

来源:华佗小知识

mybatisplus

mapper类

@Mapper
public interface UserMapper extends BaseMapper<UserEntity>{
 
}

这个的意思是让usermapper继承mbq的basemapper,获取basemapper自带的通用数据库方法,同时让usermapper和UserEntity的实体类绑定basemapper的方法会操作这个实体类

实体类

@Data
@TableName("user") // 通过 @TableName 注解指定实体类对应的数据库表名为 "user"
public class UserEntity {
    private Long id;
    private String username;
    private String password;
    private String email;
}

 让UserEntity和数据库的user表绑定,此时我们可以通过basemapper的方法操作user表的内容

当我们使用basemapper自带的方法的时候,mapper.java层和mapper.xml层已经帮我们写好,不需要我们再写了,我们想传参,传实体类,传wrapper条件都有对应的方法

 

在设置wrapper条件时,经常会用到lambda表达式,比如
 

 return baseMapper.selectList(new LambdaQueryWrapper<UserEntity>()
            .like(UserEntity::getName, userentity.getName())
            .eq(UserEntity::getStatus, userentity.getStatus())
            .like(UserEntity::getDuty, userentity.getDuty()));
    

以第一行为例:

UserEntity::getName 是一个 Java 8 的 Lambda 表达式,它指向了 UserEntity 实体类中的 getName 方法,用于获取 UserEntity 对象的名称属性,在 MyBatis Plus 中,根据这个 Lambda 表达式,框架会自动对应到数据库表中与 name 属性对应的字段(按照实体类与表字段的映射规则)。简单来说就是取user表中的name属性

userentity.getName() 则是获取一个名为 userentity 的 UserEntity 类型对象的名称属性值,这个值会作为 LIKE 条件中的具体参数。简单来说就是取传入的类对象中的name属性

 

由此可见,<> 中的 UserEntity 是指定了这个 LambdaQueryWrapper 所针对的实体类类型,它明确了整个查询条件构建以及后续与数据库交互操作都是围绕着与 UserEntity 实体类对应的数据库表来进行的

所以上面部分代码翻译成sql语句就是:

SELECT *
FROM user 
WHERE
    -- LIKE条件对应,对name字段进行模糊查询,%表示匹配任意字符(前后模糊匹配)
    name LIKE CONCAT('%', #{userentity.name}, '%')
    AND
    status = #{userentity.status}
    AND
    duty LIKE CONCAT('%', #{userentity.duty}, '%')
;

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务