@param的總結

遇到的異常:

nested exception is org.apache.ibatis.binding.BindingException: Parameter 'deptId' not found. Available parameters are [0, 1, param1, param2],

當引用錯誤的時候就會報這樣的錯誤

 

關於@param註解的一些思考

1、註解的作用

用註解來簡化xml配置的時候(比如Mybatis的Mapper.xml中的sql參數引入),@Param註解的作用是給參數命名,參數命名後就能根據名字得到參數值,正確的將參數傳入sql語句中(一般通過#{}的方式,${}會有sql注入的問題)。

2、使用@Param註解的sql語句 引用的是mybatis的註解

List<InfoVo> getInfo(@Param("deptId") String deptId, @Param("type") Integer type);

SELECT
	id
FROM
	t_info 
WHERE
	deptId = #{deptId} 
	AND type = #{type} 
	AND isDel = 0 

3、不使用@Param註解 

3.1 List<InfoVo> getInfo(String deptId, Integer type);

SELECT
	id
FROM
	t_info 
WHERE
	deptId = #{0} 
	AND type = #{1} 
	AND isDel = 0 

mybatis是根據順序來取值的

3.2 List<InfoVo> getInfo(JavaBean b);

SELECT
	id
FROM
	t_info 
WHERE
	deptId = #{deptId} 
	AND type = #{type} 
	AND isDel = 0 

mybatis會引用bean中的屬性

4、當@Param註解引用的是spring的時候,mybatis取值的方式如同3.1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章