-
Notifications
You must be signed in to change notification settings - Fork 46.1k
Dao接口里方法重载的一些补充 #1164
Copy link
Copy link
Closed
Labels
enhancementNew feature or request or suggestionNew feature or request or suggestionperfectImprove knowledge points or descriptionsImprove knowledge points or descriptions
Description
Dao接口中方法是可以重载的,但是有一些限制。
1、无参数方法可以和有参数方法共存。guide哥文中已经写了
2、同为有参方法,参数数量必须一致。且使用相同的@param,或者使用param1这种
下面是参数数量不同时,测试如下:
PersonDao.java

PersonDao.xml

queryById()执行到DynamicContext中

因为传的参数为空,所以获取到的parameterObject为空,获取到id和name值为null,标签中条件就不成立了,sql语句可以执行通过。
queryById(1L)执行到DynamicContext中,当标签获取name的参数值时

参数数组中只有参数名id和param1两个参数。parameterObject为参数Map。进入((Map)parameterObject).get(name)方法中。

因为刚才的parameterObject只含有id和param1两个参数,所以不包含name,抛出异常。
<if test="name != null and name != ''">执行失败。
queryById(1L,"1")方法可以正常执行
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or request or suggestionNew feature or request or suggestionperfectImprove knowledge points or descriptionsImprove knowledge points or descriptions