我在一个简单的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
}
任何帮助都将不胜感激。
答案 0 :(得分:1)
您可能正在寻找的是命名或序数参数。请参阅Sql javadoc,“避免SQL注入”和“命名和命名的序数参数”章节。
使用序数参数可以这样做:
def rows = sql.rows("select ... from xyz.whatever
where time_period = ? && mv = ?", [timePeriod, mv])