MyBatis-Plus_实体作为wapper的参数

本文介绍如何使用MyBatis Plus通过实体类进行精确和模糊查询,包括实体类参数、条件构造器QueryWrapper的使用,以及如何自定义SQL条件实现更灵活的查询需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
     * 1.传递的参数如果是实体类
     * <p>
     * 注:这种情况传递过来的参数是等值的也就是=
     * 如果不想等值,例如:like '条件'
     * 在实体类中,需要处理属性的上面添加@TableField(condition ="%s&lt;#{%s}")
     * <p>
     * 里面的condition,可以采用已经有的栗子,如果没有符合你需求的,
     * 可以参考SqlCondition(比较条件常量定义类)它的形式,仿写除符合自己需求的condition
     * <p>
     * 例如:age 小于 条件
     * age < '传过来的条件'
     *
     * @TableField(condition ="%s&lt,#{%s}")
     * age
     */
    @Test
    public void selectByWrapperEntity() {

        User whereUser = new User();
        whereUser.setName("刘雨红");
        whereUser.setAge(32);

        QueryWrapper<User> queryWrapper = new QueryWrapper<User>(whereUser);

        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /*
      sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name=? AND age=?

      不等值的sql:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE CONCAT('%',?,'%') AND age<?
     */
    /**
     * 2.传递的参数如果是实体类和参数条件同时存在,这种情况互不影响,条件都会拼接在where后边
     * <p>
     * 注意:不要重复了
     */
    @Test
    public void selectByWrapperEntity2() {

        User whereUser = new User();
        whereUser.setName("刘雨红");
        whereUser.setAge(32);

        QueryWrapper<User> queryWrapper = new QueryWrapper<>(whereUser);
        queryWrapper.like("name", "雨").lt("age", 40);

        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /*
      sql形式:SELECT id,name,age,email,manager_id,create_time FROM user
              WHERE name=? AND age=? AND name LIKE ? AND age < ?
     */
@Data
public class User {

    // 主键
    private Long id;
    //姓名
    @TableField(condition = SqlCondition.LIKE)
    private String name;
    //年龄
    @TableField(condition ="%s&lt;#{%s}")
    private Integer age;
    //邮箱
    private String email;
    // 上级id
    private Long manager_id;
    //创建时间
    private LocalDateTime createTime;
}

 

### 回答1: Mybatis-Plus的Wrapper是一个查询条件构造器,可以用于构建复杂的查询条件。使用Wrapper可以方便地实现动态SQL查询,避免手写SQL语句的繁琐和容易出错。 Wrapper提供了很多方法,可以根据需要选择使用。常用的方法包括eq、ne、gt、ge、lt、le、like、in、notIn等,可以根据字段的值进行等于、不等于、大于、大于等于、小于、小于等于、模糊匹配、包含、不包含等操作。 使用Wrapper的步骤如下: 1. 创建Wrapper对象,可以使用LambdaQueryWrapper或者QueryWrapper。 2. 使用Wrapper的方法构建查询条件,可以链式调用多个方法。 3. 调用Mybatis-Plus的查询方法,传入Wrapper对象作为参数。 例如: ``` LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getAge, 18).like(User::getName, "张"); List<User> userList = userMapper.selectList(wrapper); ``` 以上代码创建了一个LambdaQueryWrapper对象,使用eq方法添加了一个等于条件和like方法添加了一个模糊匹配条件,最后调用selectList方法查询符合条件的用户列表。 需要注意的是,Wrapper的使用需要结合Mybatis-Plus的其他功能一起使用,例如实体类的注解、分页查询、排序等。 ### 回答2: Mybatis-PlusMybatis框架的增强工具,在使用Mybatis-Plus时,经常会用到wapperWapperMybatis-Plus提供的查询条件构造器,可以用来构建复杂的查询条件。 使用wapper时,需要先创建一个空的wapper对象: ```java QueryWrapper wrapper = new QueryWrapper(); ``` 这里创建了一个空的查询条件构造器,接下来可以根据需要添加查询条件。以下是常用的一些方法: 1. eq(String column, Object value) 这个方法用来添加等于条件。 示例: ```java wrapper.eq("username", "admin"); ``` 这个条件表示查询username等于admin的数据。 2. ne(String column, Object value) 这个方法用来添加不等于条件。 示例: ```java wrapper.ne("username", "admin"); ``` 这个条件表示查询username不等于admin的数据。 3. gt(String column, Object value) 这个方法用来添加大于条件。 示例: ```java wrapper.gt("age", 18); ``` 这个条件表示查询年龄大于18的数据。 4. lt(String column, Object value) 这个方法用来添加小于条件。 示例: ```java wrapper.lt("age", 30); ``` 这个条件表示查询年龄小于30的数据。 5. ge(String column, Object value) 这个方法用来添加大于等于条件。 示例: ```java wrapper.ge("age", 18); ``` 这个条件表示查询年龄大于等于18的数据。 6. le(String column, Object value) 这个方法用来添加小于等于条件。 示例: ```java wrapper.le("age", 30); ``` 这个条件表示查询年龄小于等于30的数据。 7. between(String column, Object value1, Object value2) 这个方法用来添加范围条件。 示例: ```java wrapper.between("age", 18, 30); ``` 这个条件表示查询年龄在18到30之间的数据。 8. like(String column, Object value) 这个方法用来添加模糊查询条件。 示例: ```java wrapper.like("username", "ad"); ``` 这个条件表示查询username中包含ad的数据。 9. in(String column, Object[] values) 这个方法用来添加in查询条件。 示例: ```java wrapper.in("age", new Object[]{18, 20, 22}); ``` 这个条件表示查询年龄在18、20、22之间的数据。 10. and(String sql, Object... params) 这个方法用来添加自定义的查询条件。 示例: ```java wrapper.and("age > {0} and age < {1}", 18, 30); ``` 这个条件表示查询年龄大于18小于30的数据。 以上是wapper的一些常用方法,还有其他的一些方法可以根据需要进行使用。在使用wapper时需要注意尽量避免使用字符串拼接,可以使用占位符来避免SQL注入的发生。 ### 回答3: Mybatis-PlusMyBatis的增强工具包,用于简化MyBatis的开发过程。其中,Mybatis-Plus WapperMybatis-Plus中的一种查询构造器,用于构建复杂的SQL查询语句。 使用Mybatis-Plus Wapper构建查询语句的步骤如下: 1.导入mybatis-plusmybatis-plus-boot-starter依赖。 2.在实体类上使用@TableField注解定义数据表字段和实体类属性的映射关系。 3.编写具体的查询逻辑,使用Wapper对象构建查询条件。 Wapper对象的使用方法如下: 包装器(Wrapper)是一个条件构造器,用于构建where子句,通常可以用来完成如下任务: 动态拼接SQL语句,将多个条件动态组合成一个完整的SQL语句。 按一定条件查询,例如按时间范围、按关键字等。 可以多种操作,例如:eq(等于)、ne(不等于)、gt(大于)、lt(小于)、ge(大于等于)、le(小于等于)、like(模糊查询)等。 使用Wapper对象时,首先需要创建一个Wapper对象,然后调用其方法来设置查询条件。例如,假设我们要查询年龄在18岁以下的用户,可以在代码中这样编写: ```java QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.lt("age", 18); List<User> userList = userMapper.selectList(wrapper); ``` 其中,QueryWrapper<User>表示使用User实体类作为查询条件的封装器,lt(“age”,18)表示查询年龄小于18岁的用户,selectList方法则表示执行查询操作并返回查询结果。查询条件还可以使用多个条件组合,并支持分页查询等。 在实际开发中,Mybatis-Plus Wapper可以大大简化SQL查询语句的编写和维护工作,提高开发效率和代码可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值