1、需求
有一些情况下前端从后台获取数据时是需要从前端传字段名的。如:
@Query(nativeQuery = true, value = "select * from _table where find_in_set(?1, ?2)")
List<> query(String string1, String field);
但这种情况下并不能进行有效查询,原因是 field
字段名在数据库执行查询时例如应该是 type 。实际上却是 ‘type’ 字符串
2、一种解决办法
使用case
语句,可以在执行查询前先判断传来的field
内容,然后动态生成sql语句。如:
@Query(nativeQuery = true, value = "select * from _table where find_in_set(?1, case ?2 when 'type' then type when 'name' then name end)")
List<> query(String string1, String field);
利用此方法也可以根据传入的字段名进行order by
排序。
(耶!,撒花!!)