将动态值传递给WSO2 DBLook“赞”查询

时间:2018-11-08 09:04:29

标签: mysql wso2 ei

场景: 我已经使用DBLookup中介程序通过传递名称的一部分来检索全名。为此,我在sql中使用了like选项。

  

全名:约翰·史密斯

     

传递的值:约翰

     

SQL:SELECT * FROM表WHERE FullName,例如'%John%'

使用的配置

    <dblookup>
   <connection>
      <pool>
         <driver>com.mysql.jdbc.Driver</driver>
         <url>jdbc:mysql://localhost:3306/world</url>
         <user>root</user>
         <password>root</password>
      </pool>
   </connection>
   <statement>
      <sql>SELECT TP_ID, TP_FULL_NAME, TP_USER_NAME, TP_USER_PASSWORD, TP_ACTIVE, TP_CHANGED_TIME, TP_TENANT_ID FROM tp_user WHERE TP_FULL_NAME like ('%?%');</sql>
      <parameter expression="get-property('name')" type="VARCHAR" />
   </statement>
</dblookup>

错误

    [2018-11-08 13:04:14,943] [] ERROR - DBLookupMediator SQL Exception occurred while executing statement : SELECT TP_ID, TP_FULL_NAME, TP_USER_NAME, TP_USER_PASSWORD, TP_ACTIVE, TP_CHANGED_TIME, TP_TENANT_ID FROM tp_user WHERE TP_FULL_NAME like ('%?%'); against DataSource : jdbc:mysql://localhost:3306/world
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)

1 个答案:

答案 0 :(得分:2)

按如下所示更改您的sql语句;

  

        从tp_user中选择TP_ID,TP_FULL_NAME,TP_USER_NAME,TP_USER_PASSWORD,TP_ACTIVE,TP_CHANGED_TIME,TP_TENANT_ID TP_FULL_NAME 像CONCAT('%',?,'%');               

有关更多参考,您可以遵循此LINK