MyBatis-Plus_實體作爲wapper的參數

/**
     * 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;
}

 

發佈了64 篇原創文章 · 獲贊 6 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章