多表聯查時使用mybatis-plus的LambdaQueryWrapper 多表相連下實現條件查詢


MyBatisPlus分頁多表關聯查詢 - SegmentFault 思否

下面的都是單表,如果要在多表聯查的基礎上使用mybatis-plus提供的LambdaQueryWrapper等查詢條件包裹器對象,參看上面的鏈接

 

總而言之,在service使用LambdaQueryWrapper拼接條件查詢后,其中的關鍵 lambda執行方法需要執行我們自己在mapper接口定義的方法,然后在方法上使用注解引入自定義的sql語句 但是不需要寫條件部分 where部分——直接引用LambdaQueryWrapper對象給出的就行

public interface GameQueryMapper extends BaseMapper<GameQuery> {
    String querySql = "SELECT a.*, b.org_id FROM t_game AS a LEFT JOIN t_game_game_org AS b ON b.game_id = a.id ";
    String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}";
    /**
     * 分頁查詢
     */
    @Select(wrapperSql)
    Page<GameQuery> page(Page page, @Param("ew") Wrapper queryWrapper);

    /**
     * 普通查詢
     */
    @Select(wrapperSql)
    List<GameQuery> list(@Param("ew") Wrapper queryWrapper);

    /**
     * 單獨查詢
     */
    @Select(wrapperSql)
    QyyOrgQuery one(@Param("ew") Wrapper queryWrapper);
}

public interface GameQueryMapper extends { 
String querySq1 
"SELECT b.org_id FROM t_game AS a LEFT JOIN t_game_game.org AS b C 
String wrapperSq1 
"SELECT from ( 
+ querySq1 + 
' ) AS q ${ew.customSq1Segment}",• 
@Se1ect(wrapperSq1) 
Page<GameQuery> page(Page page, wrapper queryldrapper); 
@Se1ect(wrapperSq1) 
Wrapper queryWrapper); 
@Select(wrapperSq1) 
QyyOrgQuery one(@Param("ew") Wrapper queryWrapper) ;

mapper 
1 
List<Emp10yee> selectByGenderAndAge( Short I') String age ) ;


我個人的項目中的實際應用

service接口的方法

public interface ISa1esOrderConnectionService extends BaseService<Sa1esOrderConnection> { 
PageResu1t<Sa1esOrderConnectionVO> 
salesOrderConnectionCriteria)

 

service實現類

@Overrid4 
public PageResu1t<Sa1esOrderConnectionVO> searchPage(Sa1esOrderConnectionCriteria salesOrderConnectionCriteria) { 
mybatis-plu La m bdaQu eryWrap pe 
new . lambda() ; 
LambdaQueryWrapper<Sa1esOrderConnection> lambda 
if (salesOrderConnectionCriteria . getOrderNumber() != null) { 
lambda . eq(Sa1esOrderConnection: : getOrderNumber, salesOrderConnectionCriteria . getOrderNumber()); 
if (salesOrderConnectionCriteria . getOrderType() ! 
null) { 
lambda . eq(Sa1esOrderConnection : : getOrderType , 
salesOrderConnectionCriteria . getOrderType ( ) ) ; 
PageHe1per . startpage( salesOrderConnectionCriteria . getCurrentPage ( ) , 
salesOrderConnectionCriteria . getPageSize ( ) ) 
salesOrderConnectionMapper . list(lambda) ; 
List<Sa1esOrderConnection> salesOrderConnections 
Pagelnfo<Sa1esOrderConnection> pagelnfo 
pagelnfo. getTota1() ; 
long total 
new Pagelnfo<>(sa1esOrderConnections) 
salesOrde rConnectionT ransfer . set ( salesOrderConnections ) 
List<Sa1esOrderConnectionVO> salesOrderConnectionVOS 
return new salesOrderConnectionVOS) ;

 

mapper接口

public interface SalesOrderConnectionMapper extends BaseMapper<Sa1esOrderConnection> { 
String querySqL 
"select sl.*,s3.pay_type,s3.Shipping_method from sales order as sl LEFT JOIN sales _ consignee as s3 on sl.consignee=s3.id" ; 
) AS q ${ew. customSq1Segment}" ; 
String wrapperSqL 
- "SELECT * from 
+ querySqL + 
(querysql) (${ew.cust msqISegment)) 
* @param queryWrappe 
@Se1ect ( ) 
List<Sa1esOrderConnection> " ew") Wrapper queryWrapper) ;


免責聲明!

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



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