@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
- 每日註解學習(九)@PostConstruct和@PreConstruct註解Struct
- java 註解學習補充Java
- java註解初步學習和使用Java
- JUnit5註解學習指引
- 註解和反射學習筆記反射筆記
- jackson學習之五:JsonInclude註解JSON
- java自定義註解學習(三)_註解解析及應用Java
- 深入學習Spring框架(二)- 註解配置Spring框架
- jackson學習之八:常用方法註解
- jackson學習之七:常用Field註解
- Java註解與反射學習筆記Java反射筆記
- MyBatis 中 @Param 註解的四種使用場景,最後一種經常被人忽略!MyBatis
- Spring 註解學習 詳細程式碼示例Spring
- Spring學習之05使用註解開發Spring
- SpringMVC入門學習---使用註解開發SpringMVC
- Spring學習筆記2(IOC註解方式&AOP)Spring筆記
- Kubernetes學習筆記(二):Pod、標籤、註解筆記
- 機器學習數學知識中令人費解的notation符號註解機器學習符號
- Spring註解篇,學完註解深入瞭解SpringBoot更容易Spring Boot
- PathVariable annotation was empty on param 0
- Java學習十六—掌握註解:讓程式設計更簡單Java程式設計
- JPA-style positional param was not an integral ordinal錯誤解決辦法
- Java註解在Android中必須學習的細節知識JavaAndroid
- Java開發學習(十二)----基於註解開發依賴注入Java依賴注入
- 學習MyBatis必知必會(7)~註解開發、動態SQLMyBatisSQL
- Java開發學習(十)----基於註解開發定義beanJavaBean
- JUnit5學習之五:標籤(Tag)和自定義註解
- 事件註冊與事件代理學習事件
- Day69.註解&列舉類的複習 -Java註解&列舉類Java
- openssl_private_encrypt(): key param is not a valid
- Spring入門學習手冊 2:怎麼用註解來DI/IOCSpring
- 拯救深度學習:標註資料不足下的深度學習方法深度學習
- [譯] 學習 Spring Security(三):註冊流程Spring
- 碎片化學習Java(二)-- Java註釋Java
- Consul 學習筆記-服務註冊筆記
- Java開發學習(十三)----基於註解開發定義第三方bean及註解開發總結JavaBean