MyBatis在表名作為參數時遇到的問題


之前在用MyBatis的時候沒用過表名作為參數,最近使用到了。

基於注釋使用MyBatis的Dao層代碼如下:

@Repository
public interface Base1102Dao {
    @Select(value = "Select * from ${table_name} order by id")
    @ResultType(HashMap.class)
    List<HashMap> getAll(@Param("table_name") String tableName);
}

區別為:在用表作為參數使用的時候不在使用#{param},而是使用${param}。

 

 

同時遇到的一個問題是因為在參數的時候沒有使用@Parem注解會導致編譯器誤以為String為一個class,報如下錯

// 第二個標紅的代碼(@Param("table_name"))如果去掉就會報這個錯

There is no getter for property named 'table_name' in 'class java.lang.String'

解決方案:加上@Param然后指定一個名字,在sql中使用就可以了

 

我之前經常不對單個String作為參數的函數用@Param參數注釋,因為直接在sql 中寫   #{string} 就可以了。但這個不知道為什么一定要這樣寫(因為參數去當表名了?)。不深究

 

一篇對@Param參數注解細講的文章連接:

http://iyiguo.net/blog/2012/09/27/mybatis-param-mapping-rules/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM