Как использовать имя таблицы, разрешенное для внешнего SQL-запроса в Java - PullRequest
0 голосов
/ 08 января 2019

Я ссылался на ответ вопроса, чтобы перенести SQL-запрос SQL во внешний файл. Как я могу динамически разрешить имя таблицы в запросах (пользовательский Java-класс Util, который возвращает полное имя таблицы со схемой).

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>
<entry key="getPersonById">
    <![CDATA[
        Select Name From Person **<!-- How to Dynamically resolve the table Name here-->**
        Where Id =?     
    ]]>

</entry>    
<entry key="getPersonBySSN">
    <![CDATA[

    ]]>
</entry>

</properties>

В контексте приложения Spring загрузите этот xml-файл

<bean id="queryProps" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations" value="classpath:/queries.xml" />
</bean>

Внедрите этот компонент в ваш класс DAO

<bean id="myDAO" class="com.xyz.dao.MyDAOImpl">
  <property name="queryProps" ref="queryProps" />
</bean>

Определите queryProps в вашем классе DAO и не забудьте иметь метод установки для этого

private Properties queryProps;

Теперь вы можете получить доступ к запросу в вашей DAO следующим образом -

String query = queryProps.getProperty("getPersonById");

Преобразователь имен таблиц Util Class:

public class TableNameResolver{
  public static String getTableName(String tableShortName){
   //Custom logic that return the full table name
    return "Full Table Name";
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...