Mybatis Java API - Using Mappers

<T> T getMapper(Class<T> type)

您提到的插入(insert)、更新(update)、删除(delete)和查询(select)方法对于一些操作来说确实很强大,但它们也比较冗长、不具备类型安全性,并且对于IDE和单元测试的帮助并不如它们本应该有的那样。在上面的“入门”部分,我们已经看到了使用Mapper的示例。

使用Mapper类执行映射语句是更常见的一种方式。Mapper类实际上是一个包含方法定义的接口,这些方法与SqlSession的方法相对应。以下示例展示了一些方法签名及其与SqlSession的对应关系。

public interface AuthorMapper {
  // (Author) selectOne("selectAuthor", 5);
  Author selectAuthor(int id);

  // (List<Author>) selectList("selectAuthors")
  List<Author> selectAuthors();

  // (Map<Integer,Author>) selectMap("selectAuthors", "id")
  @MapKey("id")
  Map<Integer, Author> selectAuthors();

  // insert("insertAuthor", author)
  int insertAuthor(Author author);

  // updateAuthor("updateAuthor", author)
  int updateAuthor(Author author);

  // delete("deleteAuthor", 5)
  int deleteAuthor(int id);
}

 简而言之,每个Mapper方法的签名应该与它所关联的SqlSession方法相匹配,但不包含String类型的参数ID。相反,方法名必须与映射的语句ID相匹配。

另外,返回类型必须与单个结果的预期结果类型匹配,或者是多个结果或游标的数组或集合。所有常见的类型都受支持,包括:基本类型、Map、POJO和JavaBean。

注意:Mapper接口不需要实现任何接口或扩展任何类,只要方法签名可以用于唯一确定相应的映射语句即可。

注意:Mapper接口可以扩展其他接口。当使用XML绑定到Mapper接口时,请确保语句位于适当的命名空间中。另外,唯一的限制是在层次结构中不能有两个接口具有相同的方法签名(无论如何,这都是一个不好的做法)。

您可以向Mapper方法传递多个参数。如果这样做,它们默认会以“param”的字面量加上它们在参数列表中的位置进行命名,例如:#{param1},#{param2}等。如果您想更改参数的名称(仅限多个参数),则可以在参数上使用@Param("paramName")注解。

您还可以向方法传递RowBounds实例来限制查询结果。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值