Mybatis Java API - Using Mappers

2023-12-28 16:51:48
<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实例来限制查询结果。

文章来源:https://blog.csdn.net/hay23455/article/details/135270065
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。