我有以下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'%?%')但我觉得呢?对于特定参数,只能使用一次。下一个>我写的是第二个参数。
答案 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>