Mybatis-plus之QueryWrapper、QueryChainWrapper、LambdaQueryWrapper以及LambdaQueryChainWrapper用法


前言:以前都是使用QueryWrapper的情況多一點,其余三種也沒怎么涉及。最近是因為優化一個項目,所以才突然想起。
首先准備一個對應的實體類:

@Data
@TableName("house")
public class HouseEntity {
    @TableId(type = IdType.AUTO)
    private Integer houseId;
    private String houseOwner;
    private String houseArea;
}

分別測試使用代碼測試,都以查詢所有的數據為目的。都注入

@Autowired
private HouseMapper houseMapper;
  1. QueryWrapper
@Test
public void test1() {
List<HouseEntity> list=houseMapper.selectList(new QueryWrapper<HouseEntity>()
                .orderByDesc("house_area"));
        System.out.println("QueryWrapper:"+list);
    }

執行結果:QueryWrapper:[HouseEntity(houseId=2, houseOwner=LS, houseArea=72), HouseEntity(houseId=1, houseOwner=ZS, houseArea=70)]

  1. QueryChainWrapper
@Test
public void test() {
List<HouseEntity> list2=new QueryChainWrapper<>(houseMapper)
                .orderByDesc("house_area").list();
        System.out.println("QueryChainWrapper:"+list);
    }

執行結果:QueryChainWrapper:[HouseEntity(houseId=2, houseOwner=LS, houseArea=72), HouseEntity(houseId=1, houseOwner=ZS, houseArea=70)]

  1. LambdaQueryWrapper
@Test
public void test3() {
List<HouseEntity> list=houseMapper.selectList(new LambdaQueryWrapper<HouseEntity>()
                .orderByDesc(HouseEntity::getHouseArea));
       System.out.println("LambdaQueryWrapper:"+list);
    }

執行結果:LambdaQueryWrapper:[HouseEntity(houseId=2, houseOwner=LS, houseArea=72), HouseEntity(houseId=1, houseOwner=ZS, houseArea=70)]

  1. LambdaQueryChainWrapper
@Test
public void test3() {
List<HouseEntity> list = new LambdaQueryChainWrapper<>(houseMapper)
                .orderByDesc(HouseEntity::getHouseArea).list();
        System.out.println("LambdaQueryChainWrapper:"+list);
  }
執行結果:LambdaQueryChainWrapper:[HouseEntity(houseId=2, houseOwner=LS, houseArea=72), HouseEntity(houseId=1, houseOwner=ZS, houseArea=70)]

總結:

  1. QueryWrapperQueryChainWrapper只能都只能指定需要的數據庫列名
  2. LambdaQueryWrapperLambdaQueryChainWrapper可以通過獲取Lambda數據庫列名
  3. QueryWrapperLambdaQueryWrapper不能使用鏈式查詢的方式,必須借助BaseMapper來執行
  4. QueryChainWrapperLambdaQueryChainWrapper可以使用鏈式查詢的方式,如list(),one()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM