網(wǎng)站首頁 編程語言 正文
IllegalArgumentException異常產(chǎn)生原因及解決方案
01 異常發(fā)生場景
- 當(dāng)我在使用mybatis執(zhí)行MySQL語法時出現(xiàn)的bug
<!--mybatis的映射-->
<resultMap id="OrdersVoResult" type="OrdersVo">
<!-- id配置的是主鍵,就是表的主鍵 -->
<!-- property是實體類的屬性名 -->
<!-- cloumn是sql查詢出來的字段名 -->
<id property="orderId" column="order_id"></id>
<!-- result是其他的字段 -->
<result property="orderNum" column="order_num"></result>
<result property="orderTime" column="order_time"></result>
<collection property="products" javaType="ordersDtlVo">
<id property="orderDtlId" column="order_dtl_id"></id>
<result property="productId" column="product_id"></result>
<result property="productName" column="product_name"></result>
<result property="productSellingPrice" column="product_selling_price"></result>
<result property="num" column="num"></result>
<result property="productPicture" column="product_picture"></result>
</collection>
</resultMap>
<select id="selectOrders" resultMap="OrdersVoResult">
SELECT
t1.order_id,
t1.create_time,
t1.order_num,
t2.order_dtl_id,
t2.product_id,
t2.product_name,
t2.product_selling_price,
t2.num,
t2.product_price
FROM
orders AS t1
left JOIN
orders_dtl AS t2
ON t1.order_id = t2.order_id
WHERE
t1.user_id = #{userId}
</select>
02 異常的產(chǎn)生原因
-
在數(shù)據(jù)庫里SQL語句的執(zhí)行是沒有問題的
-
經(jīng)過查詢百度,發(fā)現(xiàn)是非法傳參異常,也就是參數(shù)傳的類型沖突,但是我前前后后對了好幾次參數(shù),確定了實體類參數(shù)對應(yīng)沒有問題
-
那么問題出在哪里呢?經(jīng)過查詢mybatis3的官方文檔,我找到了問題的所在
-
javaType
一個 Java 類的全限定名,或一個類型別名(關(guān)于內(nèi)置的類型別名,可以參考上面的表格)。 如果你映射到一個 JavaBean,MyBatis 通常可以推斷類型 ofType
也是一個 Java 類的全限定名,但映射對應(yīng)的參數(shù)是數(shù)組 -
我的實體類
public class OrdersVo { private Long orderId; private String orderNum; private Date orderTime; private List<OrdersDtlVo> products; }
-
很明顯可以看出其中一個參數(shù)是list集合,但我簡單的使用
javaType
設(shè)置路徑,所以才造成了IllegalArgumentException(參數(shù)映射問題)
03 解決方式
-
很簡單,在映射集合時,使用
ofType
映射對應(yīng)的參數(shù)即可 -
修改后的mybtais映射
-
<resultMap id="OrdersVoResult" type="OrdersVo"> <!-- id配置的是主鍵,就是表的主鍵 --> <!-- property是實體類的屬性名 --> <!-- cloumn是sql查詢出來的字段名 --> <id property="orderId" column="order_id"></id> <!-- result是其他的字段 --> <result property="orderNum" column="order_num"></result> <result property="orderTime" column="order_time"></result> <collection property="products" ofType="ordersDtlVo"> <id property="orderDtlId" column="order_dtl_id"></id> <result property="productId" column="product_id"></result> <result property="productName" column="product_name"></result> <result property="productSellingPrice" column="product_selling_price"></result> <result property="num" column="num"></result> <result property="productPicture" column="product_picture"></result> </collection> </resultMap> <select id="selectOrders" resultMap="OrdersVoResult"> SELECT t1.order_id, t1.create_time, t1.order_num, t2.order_dtl_id, t2.product_id, t2.product_name, t2.product_selling_price, t2.num, t2.product_price FROM orders AS t1 left JOIN orders_dtl AS t2 ON t1.order_id = t2.order_id WHERE t1.user_id = #{userId} </select>
原文鏈接:https://blog.csdn.net/2302_77182979/article/details/134484538
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2023-02-10 docker容器間互相訪問(docker?bridge網(wǎng)絡(luò))_docker
- 2022-10-08 ASP.NET泛型三之使用協(xié)變和逆變實現(xiàn)類型轉(zhuǎn)換_實用技巧
- 2023-03-26 TypeScript?基本數(shù)據(jù)類型實例詳解_其它
- 2022-05-12 Kotlin 判斷泛型類型 reified
- 2022-11-05 Nginx監(jiān)控模塊(vts模塊)詳解_nginx
- 2023-10-26 解決:NODE_ENV 不是內(nèi)部或外部命令,也不是可運行的程序,或者批處理文件
- 2022-09-29 go日志庫logrus的安裝及快速使用_Golang
- 2023-01-23 使用Docker部署Dashdot服務(wù)器儀表盤的步驟_docker
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支