动态SQL查询基于在dropdown / radiobutton中选择的值

时间:2014-04-29 07:02:23

标签: postgresql grails

我在一个简单的grails应用程序中有一个控制器,如下所示: 这里的where条件是静态条件。我想根据使用单选按钮(对于时间段)和使用下拉列表(对于mv)进行选择,将条件(Hourly,Afiiliates)中的过滤器设置为动态

class Tablev1classController {
    def dataSource
    def listJson = {
        def sql = new Sql(dataSource)
        def rows = sql.rows("select date_hour, total_revenue as sales, visits, marketing, organic,single_page_visits,total_units,orders,total_revenue_ly as sales_ly, visits_ly,marketing_ly, organic_ly,total_units_ly,orders_ly,single_page_visits_ly from xyz.mu_ewacs_marketing_vehicle_tylylw where time_period = 'HOURLY' && mv = 'AFFILIATES'")
        sql.close()
        render rows as JSON
    }

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可能正在寻找的是命名或序数参数。请参阅Sql javadoc,“避免SQL注入”和“命名和命名的序数参数”章节。

使用序数参数可以这样做:

def rows = sql.rows("select ... from xyz.whatever 
                     where time_period = ? && mv = ?", [timePeriod, mv])