为什么Mybatis将SelectOne和SelectIlst列入在一起



我打算设计一种方法public List<Booking> getBooking(Integer id)来进行预订,我认为这已经足够了。但是我的同事说我应该创建两种方法

public Booking getBooking(Integer id)public List<Booking> getBookingList(Map parameter)

他说我们应该成为并提到MyBatis同时具有selectOneselectList

我检查了Mybatis的DefaultSqlSessionselectOneselectList,发现它只会在SelectOne中调用SelectOne,然后返回第一个(如果SelectList具有一个结果),否则返回null或抛出异常。

>

因此,我认为没有强有力的理由都有SelectOne和SelectList。

因此,我的问题是:

  1. 为什么Mybatis具有SelectOne和SelectList,而不是SelectList
  2. 像Mybatis一样,是一种惯例或好习惯,即当我们要获得对象时,我们需要设计两种方法,一种用于获取一个对象,另一个用于获取列表对象

您的班级不应该有

public Booking getBooking() 

这没什么意义:数据库中的哪些预订会返回?

但是,它应该具有

public Booking getBooking(Long id)

这很有意义:它允许通过给定ID确定唯一的预订。这样的查询将在许多用户酶(显示预订,编辑预订等)中很有用。实际上,比getBookings()要返回所有预订:您真的不想要,而且总体上没有任何充分的理由加载数据库中的所有预订。

现在,为什么Mybatis都有两种方法?因为许多查询只能返回一个值,并且使用一种方法在执行此类查询时返回列表的方法很麻烦:您将必须系统地测试列表是否为空,并获取其第一个元素。

最新更新