Skip to main content
 首页 » 编程设计

mysql之MyBatis 参数传递

2023年09月15日32小虾米

我想在myBatis-3中使用通用的查询模板进行过滤。我的模板看起来像这样:

<sql id="filter"> 
    SELECT * FROM (${subquery}) LIMIT ${page}, 20 
</sql> 

子查询占位符可以接受任何查询。我尝试将子查询作为参数传递。但不幸的是这不起作用,子查询是空的。我想知道该属性的值是否可以接受动态值?

<select 
    id="find" 
    parameterType="some.page" 
    resultMap="map"> 
    <include refid="some.namespace.filter"> 
        <property name="subquery" value="${subquery}"/> 
        <property name="page" value="#{page}"/> 
    </include> 
</select> 
 
<sql id="subquery"> 
    SELECT * FROM test_table ORDER BY id 
</sql> 

请您参考如下方法:

为什么不换一种方式来做到这一点呢?我认为 MyBatis 不支持你所说的功能,也许你可以像下面这样做;

<select 
    id="find" 
    parameterType="some.page" 
    resultMap="map"> 
    SELECT * FROM (<include refid="subquery">) t LIMIT ${page}, 20 
</select> 
 
<sql id="subquery"> 
    SELECT * FROM test_table ORDER BY id 
</sql>