I'll play with it and see how it looks. I'm wondering if this new API should filter down to the SqlSession API as well.. that is, introduce the RowLimit class to replace the offset and limit integer parameters.... It kind of makes sense.
I bet people will be ticked that we're changing an interface signature in a Beta... but hey, it's that or suck just because of a version label... LOL. I'll create a JIRA ticket with a copy of this thread. Clinton On Sun, Aug 30, 2009 at 11:14 PM, Carlos Pita <carlosjosep...@gmail.com>wrote: > > @Select("select * from employee where first_name = #{firstName} and > > last_name = #{lastName}) > > List<Employee> findEmployeesLike(@Param("firstName") String firstName, > > @Param("lastName") String lastName, Constraint offsetLimit); > > Clinton, after considering all of your insightful remarks altogether > I've come to the conclusion that the above option is ok, because: > > 1) I don't care about exposing Constraint (or ResultHandler) to upper > layers anymore. It's fine for me. > > 2) Now I'm not thinking in terms of full-fledged daos (although I must > say after your last post that my concept of dao was far simpler than > yours from the very beginning, not so distant from your beloved > mappers at all), so I don't expect full interface flexibility, no > matter what this thread's subject still asks for :). > > 3) Although redundant and repetitive, @Param anotations will be a very > convenient shortcut for the alternative procedures of > > i. building a map: cumbersome, not type-safe thus goes against the > purpose of mapper interfaces. > > ii. creating simple dtos for the mere purpose of passing parameters: > type-safe but yet more cumbersome. > > Of course, for the usual single parameter signature, annotation will > be optional (or even forbidden). > > Consider the difference: > > i) using a map: > > List<User> findCommonFriends(Map<String, User> userPair); > > Map<String,User> userPair = new HashMap<String,User>(); > userPair.put("user1", user1); > userPair.put("user2", user2); > > ii) using a dto: > > class UserPair { > > private final User user1; > private final User user2; > > public UserPair(User user1, User user2) { > this.user1 = user1; > this.user2 = user2; > } > > public User getUser1() { > return user1; > } > > public User getUser2() { > return user2; > } > } > List<User> findCommonFriends(UserPair userPair); > > iii) using annotations > > List<User> findCommonFriends(@Param("user1") User user1, > @Param("user2") User user2); > > > Of course there are a number of tricks than can be done to alleviate > the exuberance of (i) and (ii) > to a certain extent, but not even remotely close to (iii) briefness. > > > Have we a deal ;) ? > > Best regards > -- > Carlos > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org > For additional commands, e-mail: user-java-h...@ibatis.apache.org > >