@Param註解學習
在公司做測試的時候遇到了一個關於@Param註解的問題
Dao:
BikeBind getBikeBindByBikeQrCode(String bikeQrCode);
XML:
<select id="getBikeBindByBikeQrCode" resultType="com.ttyc.scm.material.dao.domain.BikeBind" >
select * from t_scm_bike_bind
<where>
<if test="bikeQrCode != null">
bike_qr_code = #{bikeQrCode}
</if>
</where>
</select>
我傳入的bikeQrCode是811010009
使用後報錯There is no getter for property named ‘bikeQrCode’ in 'class java.lang.String
報錯的原因是:
當參數列中只有一個引數的時候,mybatis中儲存的是{_parameter=811010009,databaseId=null},在if判斷中取值的時候,bikeQrCode對應的匹配不到值就會報錯
解決辦法1:在if中使用_parameter進行比較,如果我們傳入的是其他基本型別也都可以使用這種方法,在傳入的是實體類的時候,可以通過其屬性名直接比較,我試了也可以通過 _parameter.屬性名來比較
<if test="_parameter != null">
解決辦法2:在傳遞引數的時候使用@Param進行描述,mybatis會儲存為 bikeQrCode: 811010009 鍵值對的形式,比較時可以直接通過鍵來找到他的值
如果我們在#{}中使用引數
情況1、如果是一個引數的情況下(這個引數型別可以被mybatis中的typeHandler處理),在xml中可以隨意使用屬性名
例:
select * from t_scm_bike_bind where id = #{abc}
情況2、使用多個引數會被封裝為一個map
BikeBind getBikeBindByBikeOrCodeAndId(int id,String BikeOrCode);
在map中就會被封裝為
key: param1 … paramN或者是引數的索引,索引從0開始
value:傳入的值
我們在xml中直接使用id或BikeOrCode取值是取不到的,可通過{0}進行取值
情況3、使用@Param描述引數的時候,map中的key就是@Param中的值,可以通過@Param的值來取
相關文章
- MyBatis 中 @Param 註解的四種使用場景MyBatis
- Java學習_註解Java
- Java註解學習Java
- 註解學習筆記筆記
- 自定義註解初步學習
- java 註解學習補充Java
- 每日註解學習(九)@PostConstruct和@PreConstruct註解Struct
- JUnit5註解學習指引
- 註解和反射學習筆記反射筆記
- java註解初步學習和使用Java
- java自定義註解學習(三)_註解解析及應用Java
- Java註解與反射學習筆記Java反射筆記
- 深入學習Spring框架(二)- 註解配置Spring框架
- Java學習之註解Annotation實現原理Java
- 【Mysql 學習】伺服器引數註解MySql伺服器
- Spring 註解學習 詳細程式碼示例Spring
- SpringMVC入門學習---使用註解開發SpringMVC
- jackson學習之五:JsonInclude註解JSON
- jackson學習之七:常用Field註解
- jackson學習之八:常用方法註解
- Spring學習之05使用註解開發Spring
- MyBatis 中 @Param 註解的四種使用場景,最後一種經常被人忽略!MyBatis
- springMVC學習筆記(二)-----註解和非註解入門小程式SpringMVC筆記
- context-param和init-param區別Context
- Spring學習筆記2(IOC註解方式&AOP)Spring筆記
- Spring原始碼學習之:spring註解@TransactionalSpring原始碼
- Spring4學習(二)簡單的註解Spring
- jQuery.param()jQuery
- Kubernetes學習筆記(二):Pod、標籤、註解筆記
- Spring學習筆記三: 通過註解配置BeanSpring筆記Bean
- 學習java註解,初試啟動springboot專案JavaSpring Boot
- Java學習十六—掌握註解:讓程式設計更簡單Java程式設計
- 事件註冊與事件代理學習事件
- 學習MyBatis必知必會(7)~註解開發、動態SQLMyBatisSQL
- JUnit5學習之五:標籤(Tag)和自定義註解
- Java開發學習(十二)----基於註解開發依賴注入Java依賴注入
- Java開發學習(十)----基於註解開發定義beanJavaBean
- include,forward和param指令Forward