JavaGuide
JavaGuide copied to clipboard
Dao接口里方法重载的一些补充
Dao接口中方法是可以重载的,但是有一些限制。 1、无参数方法可以和有参数方法共存。guide哥文中已经写了 2、同为有参方法,参数数量必须一致。且使用相同的@Param,或者使用param1这种
下面是参数数量不同时,测试如下:
PersonDao.java
PersonDao.xml

queryById()执行到DynamicContext中
因为传的参数为空,所以获取到的parameterObject为空,获取到id和name值为null,
queryById(1L)执行到DynamicContext中,当
参数数组中只有参数名id和param1两个参数。parameterObject为参数Map。进入((Map)parameterObject).get(name)方法中。

因为刚才的parameterObject只含有id和param1两个参数,所以不包含name,抛出异常。
<if test="name != null and name != ''">执行失败。
queryById(1L,"1")方法可以正常执行
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")方法可以正常执行
👍 这块你可以提交一个 PR 完善一下。代码不用截图,直接贴上来就行了。