我打算设计一种方法public List<Booking> getBooking(Integer id)
来进行预订,我认为这已经足够了。但是我的同事说我应该创建两种方法
public Booking getBooking(Integer id)
和public List<Booking> getBookingList(Map parameter)
,
他说我们应该成为并提到MyBatis同时具有selectOne
和selectList
。
我检查了Mybatis的DefaultSqlSession
的selectOne
和selectList
,发现它只会在SelectOne中调用SelectOne,然后返回第一个(如果SelectList具有一个结果),否则返回null或抛出异常。
因此,我认为没有强有力的理由都有SelectOne和SelectList。
因此,我的问题是:
- 为什么Mybatis具有SelectOne和SelectList,而不是SelectList
- 像Mybatis一样,是一种惯例或好习惯,即当我们要获得对象时,我们需要设计两种方法,一种用于获取一个对象,另一个用于获取列表对象
您的班级不应该有
public Booking getBooking()
这没什么意义:数据库中的哪些预订会返回?
但是,它应该具有
public Booking getBooking(Long id)
这很有意义:它允许通过给定ID确定唯一的预订。这样的查询将在许多用户酶(显示预订,编辑预订等)中很有用。实际上,比getBookings()
要返回所有预订:您真的不想要,而且总体上没有任何充分的理由加载数据库中的所有预订。
现在,为什么Mybatis都有两种方法?因为许多查询只能返回一个值,并且使用一种方法在执行此类查询时返回列表的方法很麻烦:您将必须系统地测试列表是否为空,并获取其第一个元素。