通常执行sql语句是在xml里面写好,然后传入参数,
<insert id="addProduct" parameterClass="Product2">
insert into product (father_ID,shopID)
values(
#father_ID#,#shopID)
</insert>这是普通情况
但是这样不行
<insert id="addProduct" parameterClass="Product2">
$sql$
</insert>
现在必须自己拼接sql语句了,如何直接insert拼接的sql语句呢

解决方案 »

  1.   

    如果是直接执行SQL语句,应该就不用写进XML里面去了,直接在外面应该可以执行到的。
      

  2.   

    在外面怎么执行呢?this.getSqlMapClientTemplate().insert("Product2.addPrivateProduct", sql);
      

  3.   

    你可以试试部分sql动态生成,例如:<insert id="addProduct" parameterClass="HashMap">
    insert into $tableName$ (...) value (...)
    </insert>
      

  4.   


    表名和字段名都是变动的的,每次收集的数据可能不一样,所以我自己拼接了sql,,如果按照你这种写法,我要在map里面放value的值,map是按字母顺序排序的吧,所以插入的时候可能会出错,我只用过在xml中循环list,没事过循环map.
      

  5.   

    那样的话你可以Map map = new HashMap();
    map.put('tableName','Product');
    map.put('columnName','columnA,columnB');
    map.put('columnValue',"\'valueA\','\'value,'\");<insert id="addProduct" parameterClass="HashMap">
    insert into $tableName$ ($columnName$) value ($columnValue$)
    </insert>
      

  6.   

    wangjn1982
    哈哈正解,多谢各位的积极参与