亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

【mybatis】攔截sql語句進行替換指定字段

【mybatis】攔截sql語句進行替換指定字段

牧羊人nacy 2019-01-31 21:26:13
想請教大家一下,在使用mybatis時,有個需求是根據某標志位將動態產生的sql某些字段進行替換,例如 dao.query("dao.TestSettingMapper.qryData",param) 這個方法本來正常執行的sql是“select a1,a2,a3 from tmp where id=001”,但當param中flag=“special”時,希望產生的sql是“select b1,b2,b3 from tmp where id=001”這樣 ,我想到是用aop去攔截,在方法攔截里抓出sql去替換,代碼大致這樣:public Object invoke(MethodInvocation invocation) throws Throwable {         Object[] arguments = invocation.getArguments();    String sql_id = (String) arguments[0];//sql_id     Map<String, Object> mParam = (Map<String, Object>) arguments[1];//參數     //獲取到sql     String sql = mSessionFactory.getConfiguration().getMappedStatement(sql_id).getBoundSql(mParam).getSql();    if("special"){    //進行字符替換操作     ...     }} 問題就在于我通過getBoundSql方法獲取的sql沒想到是含有通配符方式的,這樣子就與入參匹配不到了,想請教大家怎么把帶有通配符的sql語句再轉成mybatis可以識別的寫法,或者有沒有更理想的方法,可以去攔截替換sql中字段?
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 550 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號