我打算设计一种方法public List<Booking> getBooking(Integer id)
来预订,我认为这已经足够了。但我的同事说我应该创建两种方法
public Booking getBooking(Integer id)
和public List<Booking> getBookingList(Map parameter)
,
他说我们应该并且也提到mybatis同时也有selectOne
和selectList
。
我检查了mybatis selectOne
的{{1}}和selectList
,发现它只调用selectOne中的selectList,如果selectList有一个结果则返回第一个,否则返回null或者throw例外。
因此,我认为没有强有力的理由让selectOne和selectList。
因此我的问题是:
答案 0 :(得分:0)
你的班级不应该
public Booking getBooking()
这没有多大意义:数据库中的哪些预订会返回?
但它应该
public Booking getBooking(Long id)
这很有意义:它允许获得由给定ID标识的唯一预订。这样的查询在很多用例中都很有用(显示预订,编辑预订等)。而且,实际上,还有getBookings()
,这将返回所有预订:你真的不想要,并且通常不应该有任何理由,加载数据库中的所有预订。
现在,为什么myBatis有这两种方法?因为许多查询应该只返回一个值,并且使用在执行这样的查询时返回列表的方法会很麻烦:你会系统地测试列表是否为空,并获得它的第一个元素。