Передать динамические значения в запрос «как» WSO2 DBLook

Сценарий. Я использовал посредник DBLookup, чтобы получить полное имя, передав часть имени. Для этого я использовал похожую опцию в sql.

Полное имя: Джон Смит

Передано значение: Джон

SQL: SELECT * FROM table 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)

person JeewanaSL    schedule 08.11.2018    source источник


Ответы (1)


Измените оператор sql, как показано ниже;

ВЫБЕРИТЕ 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 как CONCAT('%',?,'%');

Для получения дополнительной справки вы можете следовать этому ССЫЛКА

person WeAreGroot    schedule 08.11.2018