java - How to use <foreach> statement in @SelectProvider class with MyBatis3 -


i trying use @selectprovider create dynamic sql including use of tag foreach in clause. know how use using @select annotation mapper.

the problem when translate sql sqlprovider seem use of tag directly not processed proxy invoke sqlprovider method sql.

here code example using @select:

// imports...  public interface mymapper {     @select({"<script>",         "select col_1, col_2",          "from table_1",         "where col_3 in",             "<foreach item='item' index='index' collection='items'",                 "open='(' separator=',' close=')'>",                 "#{item}",             "</foreach>",         "</script>"})     hashmap<string, object> select(@param("items") string[] items); } 

the code above works, when try use @selectprovider doesn't works.

this code when use @selectprovider:

// imports...  public interface mymapper {     @selectprovider(type = mysqlprovider.class, method = "select")     hashmap<string, object> select(@param("items") string[] items); }  public class mysqlprovider {     public string select() {         sql sql = new sql();         sql.select("col_1");         sql.select("col_2");         sql.from("table_1");         sql.where("col_3 in"             + "<foreach item='item' index='index' collection='items'"                 + "open='(' separator=',' close=')'>"                 + "#{item}"             + "</foreach>");         return "<script>" + sql.tostring() + "</script>";     } } 

when use mymapper process sql ignore script , foreach statements.

could provide concrete solution including code?


Comments

Popular posts from this blog

c++ - No viable overloaded operator for references a map -

java - Custom OutputStreamAppender not run: LOGBACK: No context given for <MYAPPENDER> -

java - Cannot secure connection using TLS -