本文共 2769 字,大约阅读时间需要 9 分钟。
提示:为了详细说明,本篇博客就快速创建简单的mapper和数据库表进行演示。
DROP TABLE IF EXISTS `role`;CREATE TABLE `role` ( `id` bigint(0) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;INSERT INTO `role` VALUES (1, '测试角色1');INSERT INTO `role` VALUES (2, '角色2');INSERT INTO `role` VALUES (3, '青山');
public interface RoleMapper extends BaseMapper{ @Select("SELECT r.* FROM role r where r.id = #{id} and r.name = #{name}") public List getRole(Long id, String name); @Select("SELECT r.* FROM role r where r.id = #{id}") public List getRole(Long id);}
@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)public class MapperTest { @Autowired private RoleMapper roleMapper; @Test public void TestMapper() { Listlist= roleMapper.getRole(3l); List list2 = roleMapper.getRole(3l, "青山"); System.out.println(list); System.out.println(list2); }}
Mapper中第一个被写入的方法
。之后经过将mapper的两个方法顺序调换,都是调用的单参数sql的方法
。在通过debug断点执行的时候,在MapperMethod类
中发现了executeForMany
方法(这个方法是mapper代理查询集合的最终执行目标),
private结果从mapper的代理对象选择sql的方式就可以看出来,mapper在执行接口方法的时候是不管重载方法的Object executeForMany(SqlSession sqlSession, Object[] args) { List result; Object param = method.convertArgsToSqlCommandParam(args); if (method.hasRowBounds()) { RowBounds rowBounds = method.extractRowBounds(args); result = sqlSession.selectList(command.getName(), param, rowBounds); } else { // 重点行 command ,command.getName()的值为全称方法名:com.mapper.RolerMapper.getRole,不包含参数列表 result = sqlSession.selectList(command.getName(), param); } if (!method.getReturnType().isAssignableFrom(result.getClass())) { if (method.getReturnType().isArray()) { return convertToArray(result); } else { return convertToDeclaredCollection(sqlSession.getConfiguration(), result); } } return result; }
参数列表
以及返回列表
,因此对于mybatis来说也就不存在重载了。 Mybatis不支持方法重载
,但是java本身是一定支持重载的。包名.方法名
,不包括方法参数列表
和方法返回值
。需要研究
。转载地址:http://uxgwi.baihongyu.com/