跳至主要內容

动态join

xuejmnet小于 1 分钟

动态join

easy-query2.3.0^版本添加了配置项relation-table-append默认smart可以自动识别使用使用了relationTable

案例

String companyName="公司";
List<MyComUser> list = easyEntityQuery.queryable(MyComUser.class)
        .filterConfigure(NotNullOrEmptyValueFilter.DEFAULT)
        .where(su -> {
            su.myCompany().name().like(companyName);
        }).toList();


==> Preparing: SELECT t.`id`,t.`com_id`,t.`user_id`,t.`gw` FROM `my_com_user` t LEFT JOIN `my_company_info` t1 ON t1.`id` = t.`com_id` WHERE t1.`name` LIKE ?
==> Parameters: %公司%(String)

//上下两个表达式因为参数没有生效所以生成的sql也会动态的智能添加relationTable

String companyName="";
List<MyComUser> list = easyEntityQuery.queryable(MyComUser.class)
        .filterConfigure(NotNullOrEmptyValueFilter.DEFAULT)
        .where(su -> {
            su.myCompany().name().like(companyName);
        }).toList();

==> Preparing: SELECT t.`id`,t.`com_id`,t.`user_id`,t.`gw` FROM `my_com_user` t




//不使用filterConfigure
String companyName="";
List<MyComUser> list = easyEntityQuery.queryable(MyComUser.class)
        .where(su -> {
            su.myCompany().name().like(EasyStringUtil.isNotBlank(companyName),companyName);
        }).toList();

==> Preparing: SELECT t.`id`,t.`com_id`,t.`user_id`,t.`gw` FROM `my_com_user` t


//在2.3.0之前的版本需要手动if包裹条件,2.3.0后更加智能

String companyName="";
List<MyComUser> list = easyEntityQuery.queryable(MyComUser.class)
        .where(su -> {
            if(EasyStringUtil.isNotBlank(companyName)){
                su.myCompany().name().like(companyName);
            }
        }).toList();
==> Preparing: SELECT t.`id`,t.`com_id`,t.`user_id`,t.`gw` FROM `my_com_user` t
上次编辑于:
贡献者: xuejiaming