Skip to content

Dao接口里方法重载的一些补充 #1164

@klogan2023

Description

@klogan2023

Dao接口中方法是可以重载的,但是有一些限制。
1、无参数方法可以和有参数方法共存。guide哥文中已经写了
2、同为有参方法,参数数量必须一致。且使用相同的@param,或者使用param1这种

下面是参数数量不同时,测试如下:
PersonDao.java
QQ截图20210416094749
PersonDao.xml
QQ截图20210416131153

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

queryById(1L)执行到DynamicContext中,当标签获取name的参数值时
QQ截图20210416094700

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

因为刚才的parameterObject只含有id和param1两个参数,所以不包含name,抛出异常。
<if test="name != null and name != ''">执行失败。

queryById(1L,"1")方法可以正常执行

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request or suggestionperfectImprove knowledge points or descriptions

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions