0

我想在mybatis_dynamic_sql中实现下面的sql查询。

select * from xyz where TO_CHAR(some_date_col - ?,'YYYYMMDD') >=TRUNC(SYSDATE)
4

1 回答 1

0

如果您使用 a mapper.xml,您select可能如下所示。请注意,不要声明特定的paramterType

<select
    id="myQueryInXml"
    resultType="[replace with your type]"
    resultMap="[replace with the name of your resultMap]">
    select * from ${tabName} where TO_CHAR(${colName} - #{paramName},'YYYYMMDD') >=TRUNC(SYSDATE)
</select>

相应的Interface- 方法可能如下所示

boolean myQueryInXml(
        @Param("colName") final String colName,
        @Param("tabName") final String tabName, 
        @Param("paramName") final String paramName
        );

如果您使用注释,您的Interface-method 可能如下所示

@Select("select * from ${tabName} where TO_CHAR(${colName} - #{paramName},'YYYYMMDD') >=TRUNC(SYSDATE)")
boolean myQuery(
        @Param("colName") final String colName,
        @Param("tabName") final String tabName, 
        @Param("paramName") final String paramName
        );

解释

@Param("[replace with a parameter-name]")使传递的参数在注解中的给定名称下可用

$in mapper.xmlor (for example) @Select("[query]")-annotation 告诉 myBatis 打印/使用纯参数内容。另一方面,#告诉 myBatis 去“猜测”数据库类型。String例如,s 会''自动进入边缘。所以不需要手动操作

还请看一下:

mybatis – MyBatis 3 | 映射器 XML 文件

mybatis – MyBatis 3 | 动态 SQL

于 2019-08-12T12:22:30.667 回答