MyBatis接口绑定

自带的selectList等api的方法名和传参无法自定义。接口绑定可以解决方法调用不灵活,参数传递不灵活的问题。需要提供与接口匹配的映射配置文件。

遵循特定规范

必要规范:

  1. 映射配置文件中, mapper的namespace属性必须和接口的全限定路径一致
<mapper namespace="InterfaceBinding.TestInterfaceBinding">
    <select id="selAll" resultType="User">
        select * from tb_users
    </select>
</mapper>
  1. 操作数据库的标签的id属性必须和接口中对应方法的名称一致
public List<User> selAll();

可选规范:

选择遵循, 如果遵循,还可以进一步简化(在核心配置文件中可以使用package标签进行映射文件的统一扫描)。/resource/mapper与src/mapper在编译时会合并到类路径。
resource被mark as resource root。

  1. 映射文件的命名和接口命名一致
  2. 映射文件和接口放在同一个目录,可以分别放在/resource/mapper与src/mapper
    在这里插入图片描述

在mybatis配置文件中直接开启mapper映射文件的扫描,指定扫描包的位置。

<mappers>
<!--        <mapper resource="UserMapper.xml" />-->
<!--        <mapper resource="InterfaceBind.xml"/>-->
    <package name="mapper"/>
</mappers>

SqlSession对象中提供了一个方法, 用于获取接口类型的对象getMapper(接口的Class对象)。

TestInterfaceBinding mapper= sqlSession.getMapper(TestInterfaceBinding.class);

接口绑定方案中参数传递问题

  1. 可以传递简单类型
  2. 可以传递Map集合,只能通过key获取
  3. 可以传递POJO对象, 只能通过getter方法对应的属性获取
  4. 多值传递:
    a) 不使用注解, 可以通过param1, param2, …或arg0, arg1, …的方式获取。
public User selByNamePwd(String username,String password);
<select id="selByNamePwd" resultType="User">
    select * from tb_users where username=#{arg0} and password=#{arg1}
</select>

b) 使用注解, 使用@Param注解,由MyBatis将参数封装为Map集合, 可以通过key获取,也可以通过param1, param2,…获取, 不能通过arg0, arg1,…方式获取。

public User selByNamePassword(@Param("name") String username,@Param("pwd") String password);
<select id="selByNamePassword" resultType="User">
    select * from tb_users where username=#{name} and password=#{pwd}
</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值