Java本机SQL查询,用于在输入参数为空时显示所有值

时间:2016-08-18 21:16:14

标签: java sql postgresql eclipselink nativequery

我有以下DAO方法:

rvm reinstall ruby-2.2.1
rvm use ruby-2.2.1

which ruby -- /Users/rich/.rvm/rubies/ruby-2.2.1/bin/ruby
which gem -- /Users/rich/.rvm/rubies/ruby-2.2.1/bin/gem

gem list | grep xmlmc -- xmlmc-rb (2.0.3)
gemset list -- gemsets for ruby-2.2.1 (found in /Users/rich/.rvm/gems/ruby-2.2.1)
=> (default)
   global

ls ~/.rvm/gems/ruby-2.2.1/gems | grep xmlmc -- xmlmc-rb-2.0.3

如果public String getSomeTable(final String param1) { String sqlString = "select * from table where name ilike ?"; Query query = this.getEntityManager().createNativeQuery(sqlString); query.setParameter(1, "%param1%"); } param1或为空,那么我想从表格中选择所有条目。这样做的正确方法是什么?我目前正在使用以下内容:

null

但这不可扩展。我有数据类型,如整数,日期等。我想知道是否有办法跳过检查该参数,如果它是public String getSomeTable(final String param1) { String sqlString = "select * from table where name = ?"; Query query = this.getEntityManager().createNativeQuery(sqlString); if(param1 == null) query.setParameter(1, "%%"); else query.setParameter(1, "%param1%"); }

我打算使用COALESCE(?,CASE WHEN?=''THEN'%%'ELSE'%?%')但我觉得呢?对于特定参数,只能使用一次。下一个>我写的是第二个参数。

1 个答案:

答案 0 :(得分:0)

在SQL Server上,我使用类似这样的东西,也许你可以把它翻译成postgres:

 <!-- Web Service Results.. part of a larger schema, machine generated...-->
    <Hotel_Info>
             <Hotel_1>
            <HotelName_1>La Quinta Inn</HotelName>
            <HotelAddressLine1Text_1>552 12th Street West</HotelAddressLine1Text>
            <HotelCityName>Dickinson_1</HotelCityName>
            <HotelStateCode_1>ND</HotelStateCode>
            <HotelZip5Code_1>58601</HotelZip5Code>
            <HotelZip4Code_1>099</HotelZip4Code>
             </Hotel_1>
             <Hotel_2>
            <HotelName_2></HotelName>
            <HotelAddressLine1Text_2>3803 13th Ave S</HotelAddressLine1Text>
            <HotelCityName_2>Fargo</HotelCityName>
            <HotelStateCode_2>ND</HotelStateCode>
            <HotelZip5Code_2>58103</HotelZip5Code>
            <HotelZip4Code_2>099</HotelZip4Code>
             </Hotel_2>
             ....
    </Hotel_Info>

  <!-- Map to this schema     -->
  <AvailableHotels>
     <Hotel>
    <HotelName>La Quinta Inn</HotelName>
    <HotelAddressLine1Text>552 12th Street West</HotelAddressLine1Text>
    <HotelCityName>Dickinson</HotelCityName>
    <HotelStateCode>ND</HotelStateCode>
    <HotelZip5Code>58601</HotelZip5Code>
    <HotelZip4Code>099</HotelZip4Code>
     </Hotel>
     <Hotel>
    <HotelName></HotelName>
    <HotelAddressLine1Text>3803 13th Ave S</HotelAddressLine1Text>
    <HotelCityName>Fargo</HotelCityName>
    <HotelStateCode>ND</HotelStateCode>
    <HotelZip5Code>58103</HotelZip5Code>
    <HotelZip4Code>099</HotelZip4Code>
     </Hotel>
   </AvailableHotels>