2017-08-16 1 views
0

Je commence à utiliser mybatis avec annotations et j'ai essayé de passer une requête entière dans un mappeur comme celui-ci:Passer une requête SQL entière comme paramètre dans un mappeur mybatis

public interface Mapper { 

    @Select("#{sql}") 
    public HashMap<String,String> getResult(String sql);  

} 

Voilà comment je appeler la méthode:

String sql = "select * from table"; 
List<Object> list = session.selectList("getResult",sql); 

Quand j'exécuté le programme que je suis arrivé cette exception:

org.apache.ibatis.exceptions.PersistenceException: 
Error querying database. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: Invalid column type: 1111 
+0

chaque cadre moderne a pour objectif principal de bloquer l'injection SQL. Je serai extrêmement surpris si Yoy aura effet –

Répondre

0

Vous ne pouvez pas, parce que la chaîne sql n'est pas un "paramètre sql"! Au lieu de cela, vous pouvez utiliser cette solution: How to run arbitrary sql with mybatis?

+0

ça marche !! Merci beaucoup!! –