Mybatis-plus多联查询【支持传入querywarpper查询】
版本
< dependency>
< groupId> com.baomidou</ groupId>
< artifactId> mybatis-plus-boot-starter</ artifactId>
< version> 3.4.3.4</ version>
</ dependency>
service
@Service
@RequiredArgsConstructor
public class ProductServiceImpl implements ProductService {
private final ProductMapper productMapper;
@Override
public Page < ProductBo > queryPageAndDevice ( ProductBo productBo, Long current, Integer rows) {
QueryWrapper < ProductEntity > queryWrapper = Wrappers . query ( ) ;
queryWrapper. eq ( StringUtils . isNotBlank ( productBo. getMptName ( ) ) , "mpt_name" , productBo. getMptName ( ) ) ;
IPage < ProductEntity > page = productMapper. selectPageAndDevice ( new Page < > ( current, rows) , queryWrapper) ;
return ConvertUtils . convertPage ( page, ProductBo . class ) ;
}
}
mapper
package cn. hg. manager. mapper ;
import cn. hg. manager. entity. ProductEntity ;
import com. baomidou. mybatisplus. core. conditions. query. QueryWrapper ;
import com. baomidou. mybatisplus. core. mapper. BaseMapper ;
import com. baomidou. mybatisplus. core. metadata. IPage ;
import com. baomidou. mybatisplus. core. toolkit. Constants ;
import com. baomidou. mybatisplus. extension. plugins. pagination. Page ;
import org. apache. ibatis. annotations. Param ;
public interface ProductMapper extends BaseMapper < ProductEntity > {
IPage < ProductEntity > selectPageAndDevice ( Page < Object > page, @Param ( Constants . WRAPPER ) QueryWrapper < ProductEntity > queryWrapper) ;
}
xml 一对多的案例
<?xml version="1.0" encoding="UTF-8"?>
<! DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
< mapper namespace = " cn.hg.manager.mapper.ProductMapper" >
< resultMap id = " ProductResult" type = " cn.hg.manager.entity.ProductEntity" >
< id property = " mptId" column = " mpt_id" />
< result property = " mptName" column = " mpt_name" />
< result property = " mptDriverId" column = " mpt_driver_id" />
< result property = " mptCreateTime" column = " mpt_create_time" />
< result property = " mptUpdateTime" column = " mpt_update_time" />
< result property = " mptDeleteStatus" column = " mpt_delete_status" />
< collection property = " deviceEntityList" javaType = " java.util.List" resultMap = " DeviceResult" />
</ resultMap>
< resultMap id = " DeviceResult" type = " cn.hg.manager.entity.DeviceEntity" >
< id property = " mdeId" column = " mde_id" />
< result property = " mdePId" column = " mde_p_id" />
< result property = " mdeName" column = " mde_name" />
< result property = " mdeDeviceInfo" column = " mde_device_info" />
< result property = " mdeOnline" column = " mde_online" />
< result property = " mdeCreateTime" column = " mde_create_time" />
< result property = " mdeUpdateTime" column = " mde_update_time" />
< result property = " mdeDeleteStatus" column = " mde_delete_status" />
</ resultMap>
< select id = " selectPageAndDevice" resultMap = " ProductResult" >
SELECT
mpt_id,mpt_name,mpt_driver_id,mpt_create_time,mpt_update_time,mpt_delete_status,
mde_id,mde_p_id,mde_name,mde_device_info,mde_online,mde_create_time,mde_update_time,mde_delete_status
FROM mg_product
INNER JOIN mg_device ON mpt_id = mde_p_id
< where>
AND mpt_delete_status='0' AND mde_delete_status = '0'
< if test = " ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfNormal" >
AND ${ew.sqlSegment}
</ if>
< if test = " ew.sqlSegment != null and ew.sqlSegment != '' and ew.emptyOfNormal" >
${ew.sqlSegment}
</ if>
</ where>
< if test = " ew != null and ew.sqlComment != null" >
${ew.sqlComment}
</ if>
</ select>
</ mapper>