使用模板拼接SQL中文引号的问题

insert into game_data
(game_id, team_id, user_id, score, assists, yellow_card, red_card, extra)
  values
    #for(x : data)
      #(for.index == 0 ? "" : ",")
      (#(x.game_id), #(x.team_id), #(x.user_id), #(x.score), #(x.assists), #(x.yellow_card), #(x.red_card), #(x.extra ?? "null"))
    #end
  on duplicate key
      update score = values(score), assists = values(assists), yellow_card = values(yellow_card),
      red_card = values(red_card), extra = values(extra)



执行之后的SQL

 insert into game_data
	(game_id, team_id, user_id, score, assists, yellow_card, red_card, extra)
  values
      
      (3, 34, 27, 3, 1, 0, 0, 测试)
      ,
      (3, 34, 17, 1, 2, 0, 0, null)
  on duplicate key
      update score = values(score), assists = values(assists), yellow_card = values(yellow_card),
      red_card = values(red_card), extra = values(extra)


问题:使用模板中的for时,当有中文如何添加双引号。

评论区

JFinal

2017-09-06 13:09

将 #(...) 改为 #para(...) 的用法即可,前者仅仅是将参数直接输出为 sql 内容本身,后者仅仅是生成一个 '?" 问号占位,而参数生成在了另一个 paraList 之中

jfinal 的 sql 管理本质上就做了一件事情:利用模板引擎生成 sql 语句,并将问号占位的参数统一放入一个 list,sql 与 参数被封装在了 SqlPara 对象之中

SqlPara 中存放的 sql + paras,转交给 JDBC 执行就完事了

JFinal

2017-09-06 13:11

很重要一点: jfinal 的 sql 管理功能,并没有发明任何超出 sql + para 的事情,只要大家保障了最终生成的 SqlPara 中的sql + para 是能被 JDBC 所执行,sql 管理功能的事情就完成了

Javen

2017-09-07 21:11

已解决 感谢波总耐心解答

热门反馈

扫码入社