如何在mybatis_dynamic_sql中创建TO_CHAR(USE_BY_DATE-?,'YYYYMMDD')> = TRUNC(SYSDATE)

时间:2019-08-09 17:57:55

标签: java mybatis spring-mybatis mybatis-generator

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

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

1 个答案:

答案 0 :(得分:0)

如果您使用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方法可能看起来像这样

@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]")使传递的参数在注释中以给定名称可用

$中的

mapper.xml或(例如)@Select("[query]")中的注释告诉myBatis打印/使用普通参数内容。另一方面,#告诉myBatis“猜测”数据库类型。例如,String个在''中自动变小。因此无需手动进行

也请看看:

mybatis – MyBatis 3 | Mapper XML Files

mybatis – MyBatis 3 | Dynamic SQL