要實現動態傳入表名、列名,須要作以下修改html
添加屬性statementType="STATEMENT"java
同時sql裏的屬有變量取值都改爲${xxxx},而不是#{xxx}git
<delete id="deleteTableData" parameterType="java.util.Map" statementType="STATEMENT"> <![CDATA[delete from ${table} where ${col} < ${date}]]> </delete>
1. statementType:STATEMENT(非預編譯),PREPARED(預編譯)或CALLABLE中的任意一個,這就告訴 MyBatis 分別使用Statement,PreparedStatement或者CallableStatement。默認:PREPARED。這裏顯然不能使用預編譯,要改爲非預編譯。github
2. ${xxxx}:$將傳入的數據直接顯示生成在sql中,對於字符串數據,須要手動加上引號。sql
String dateStr = DateFormatUtils.format(date.getTime(), "yyyy-MM-dd HH:mm:ss"); dateStr = "'" + dateStr + "'";