1.起因
今天在项目碰到一个问题,service层判断入参是否为Null(StartDate、EndDate),为Null则走一种方法,不为Null则走另一个方法,两个方法是重载方法,例如:
@Mapper
public interface Test{
@Select("select * from User where id = #{id}")
Entity queryUserById(Long id);
@Select("select * from User where id = #{id} and createTime = #{createTime}")
Entity queryUserById(Long id,String createTime);
}
测试发现,service层调用的是方法二,但是通过打印出的Sql语句看到执行的是方法一的Sql,这就让我很郁闷了,重载居然不起作用……
2.原因
具体源码分析可以参考这篇:https://blog.csdn.net/unix21/article/details/52239514
也算是涨知识了,Mybatis不要在Mapper层中重载方法