mybatis mapper.xml将表明 列名 通过参数传递,mybatis动态sql, 在传入“表名”时,要使用${tableName},不能用#{tableName} 所以参数如果就是执行sql 语句可以是 ${sql}

sunny123456 / 2023-07-31 / 原文

mybatis mapper.xml将表明 列名 通过参数传递 mybatis动态sql,所以参数如果就是执行sql 语句可以是 ${sql}

  在传入“表名”时,要使用${tableName},不能用#{tableName}

  • #{ }被解析为参数时,占位符是 “?” , 在运行时会报异常,无法解析。
  • ${ } 仅仅为一个纯粹的字符串(String)替换,在动态 SQL 解析阶段将会进行变量替换。

 

    <!-- 根据条件查询数据  -->
    <select id="queryAllByDate" resultMap="BaseResultMap" >
     select * from system_users  where ${targetData} like #{queryData}
    </select>
List</span>&lt;SystemUsers&gt;  queryAllByDate(@Param(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">targetData</span><span style="color: rgba(128, 0, 0, 1)">"</span>)String targetData,@Param(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">queryData</span><span style="color: rgba(128, 0, 0, 1)">"</span>)String queryData);</pre>