Mybatis-Plus の高度なクエリ LambdaQueryWrapper

1. 説明

LambdaQueryWrapper はエンティティ クラスの get() 属性を通じて直接ラムダ式を使用できますが、QueryWrapper はデータベース内のテーブル名と一致している必要があります。テーブル名が複雑になる可能性があるため、現時点では LambdaQueryWrapper の方が QueryWrapper よりもはるかに便利です。

状態 説明する
等価 =に等しい
好き 「%value%」のように
みたいではなく 「%value%」とは違います
左のような 「%value」のように
いいね 「値%」のように
無効である フィールドが NULL です
フィールド IN (値 1、値 2、...)

2. コード例

1. コントローラー層のコード

@RestController
@RequestMapping("/queryDetail")
@Api(tags = "~~~接口")
public class QueryDetailController {
    @Autowired
    private QueryDetailService queryDetailService;

    @ApiOperation("根据条件查询全部字段列表")
    @PostMapping("/page")
    @DisableEncryptResponse
    public R<Object> getAllField(@RequestBody RequestBean<ModelField> requestBean) {
        return queryDetailService.getListByPage(requestBean);
    }
}

2. サービス層コード (IService<ModelField> を継承する必要があります)

@Transactional
public interface QueryDetailService extends IService<ModelField> {
    R<Object> getListByPage(RequestBean<ModelField> requestBean);
}

3. impl レイヤー コード (ServiceImpl<QueryDetailMapper, ModelField> を継承する必要があります)

@Slf4j
@Service
public class QueryDetailServiceImpl extends ServiceImpl<QueryDetailMapper, ModelField> implements QueryDetailService {
    @Autowired
    private QueryDetailMapper queryDetailMapper;

    //分页 根据条件查询全部字段列表
    @Override
    public R<Object> getListByPage(RequestBean<ModelField> requestBean) {
        ModelField modelField = requestBean.getData();

        LambdaQueryWrapper<ModelField> lambdaQuery = new LambdaQueryWrapper<>();
        if (!ToolUtil.isEmpty(modelField.getGroupName())) {
            lambdaQuery.eq(ModelField::getGroupName, modelField.getGroupName());
        }
        if (!ToolUtil.isEmpty(modelField.getName())) {
            lambdaQuery.like(ModelField::getName, modelField.getName());
        }
        if (!ToolUtil.isEmpty(modelField.getAlisaName())) {
            lambdaQuery.like(ModelField::getAlisaName, modelField.getAlisaName());
        }

        return R.ok(page(new Page<>(requestBean.getCurrentPage(), requestBean.getPageSize()), lambdaQuery));
    }
}

4. マッパー レイヤー コード (コードは必要ありません。BaseMapper<ModelField> から継承するだけです)

@Mapper
@Repository
public interface QueryDetailMapper extends BaseMapper<ModelField> {

}

5. エンティティクラス

@ApiModel(description = "") //对实体类作用解释
@TableName(value = "")      //表名字
public class ModelField {

    @ApiModelProperty("主键")
    @TableId("f_id")
    private Long id;

    @ApiModelProperty("字段名称")
    @TableField("f_name")
    private String name;

    @ApiModelProperty("字段别名")
    @TableField("f_alisaName")
    private String alisaName;

    @ApiModelProperty("字段组名称")
    @TableField("f_groupName")
    private String groupName;

    @ApiModelProperty("字段类型")
    @TableField("f_type")
    private Integer type;

    @ApiModelProperty("字段长度")
    @TableField("f_length")
    private Integer length;

}

3.郵便配達員テストインターフェイス

 {

    "現在のページ": 1、

    「ページサイズ」: 5、

    "データ": {

        "グループ名": ""、

        "名前": ""、

        "アリサ名": ""

    }

}

currentPage: 現在のページ番号

pageSize: ページあたりのエントリ数

data{}: impl レイヤ コード requestBean.getData(); で渡されたパラメータを取得できます。データのパラメータにコンテンツが入力されていない場合、デフォルトですべてのデータベース リスト情報がクエリされます。

4番目に、次のリンクを参照してください。

http://t.csdn.cn/64Bwq

http://t.csdn.cn/mdIKI

おすすめ

転載: blog.csdn.net/Jiang5106/article/details/130128468