1.起因

今天在项目碰到一个问题,service层判断入参是否为Null(StartDate、EndDate),为Null则走一种方法,不为Null则走另一个方法,两个方法是重载方法,例如:

  1. @Mapper
  2. public interface Test{
  3. @Select("select * from User where id = #{id}")
  4. Entity queryUserById(Long id);
  5. @Select("select * from User where id = #{id} and createTime = #{createTime}")
  6. Entity queryUserById(Long id,String createTime);
  7. }

测试发现,service层调用的是方法二,但是通过打印出的Sql语句看到执行的是方法一的Sql,这就让我很郁闷了,重载居然不起作用……

2.原因

具体源码分析可以参考这篇:https://blog.csdn.net/unix21/article/details/52239514

也算是涨知识了,Mybatis不要在Mapper层中重载方法