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番目に、次のリンクを参照してください。