ibatis3 : multiple parameters in statement without map or bean

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

ibatis3 : multiple parameters in statement without map or bean

Nicolas ANTONIAZZI
Hi,

Is it possible to pass multiple parameters in iBatis3 without having to pass a map or a bean ?

example :
------------- UserMapper.xml ------------
<select id="selectUsers" parameterType="hashmap" resultType="List<User>">
  SELECT * FROM user OFFSET #{offset} LIMIT #{limit}
</select>

------------- UserMapper.java -----------
public interface UserMapper {
  public List<User> selectUsers(HashMap<String, Integer> parameters);
}
-----------------------------------------

Now, I can call my statement with :


int offset = 10;
int limit = 10;

UserMapper userMapper = session.getMapper(UserMapper.class);
HashMap<String, Integer> parameters = new HashMap<String, Integer>();
parameters.put("offset", offset);
parameters.put("limit", limit);
List<Question> selections = questionMapper.selectQuestions(parameters);

------------------------------------------

I think that a cleaner way would be to do somethink like :

public interface UserMapper {
  public List<User> selectUsers(int offset, int limit);
}

UserMapper userMapper = session.getMapper(UserMapper.class);
List<Question> selections = questionMapper.selectQuestions(10, 10);

-------------------------------------------

Is there such a method to achieve it with iBatis 3 ?

Thanks,

Nicolas ANTONIAZZI.
Reply | Threaded
Open this post in threaded view
|

Re: ibatis3 : multiple parameters in statement without map or bean

Larry Meadors
Yes, you have to annotate the parameters (because java reflection is
kinda weak).

It's in the user guide.

Larry


On Mon, May 17, 2010 at 4:15 AM, Nicolas ANTONIAZZI
<[hidden email]> wrote:

> Hi,
> Is it possible to pass multiple parameters in iBatis3 without having to pass
> a map or a bean ?
> example :
> ------------- UserMapper.xml ------------
> <select id="selectUsers" parameterType="hashmap" resultType="List<User>">
>   SELECT * FROM user OFFSET #{offset} LIMIT #{limit}
> </select>
> ------------- UserMapper.java -----------
> public interface UserMapper {
>   public List<User> selectUsers(HashMap<String, Integer> parameters);
> }
> -----------------------------------------
> Now, I can call my statement with :
>
> int offset = 10;
> int limit = 10;
> UserMapper userMapper = session.getMapper(UserMapper.class);
> HashMap<String, Integer> parameters = new HashMap<String, Integer>();
> parameters.put("offset", offset);
> parameters.put("limit", limit);
> List<Question> selections = questionMapper.selectQuestions(parameters);
> ------------------------------------------
> I think that a cleaner way would be to do somethink like :
> public interface UserMapper {
>   public List<User> selectUsers(int offset, int limit);
> }
> UserMapper userMapper = session.getMapper(UserMapper.class);
> List<Question> selections = questionMapper.selectQuestions(10, 10);
> -------------------------------------------
> Is there such a method to achieve it with iBatis 3 ?
> Thanks,
> Nicolas ANTONIAZZI.

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: ibatis3 : multiple parameters in statement without map or bean

Nicolas ANTONIAZZI
Thank you Larry, I did not read correctly the User Guide.

Indeed, it says :

If your mapper method takes multiple parameters, this annotation can be applied to a mapper method parameter to give each of them a name. Otherwise, multiple parameters will be named by their ordinal position (not including any RowBounds parameters). For example #{1}, #{2} etc. is the default. With @Param(“person”), the parameter would be named #{person}.

Thanks.

2010/5/17 Larry Meadors <[hidden email]>
Yes, you have to annotate the parameters (because java reflection is
kinda weak).

It's in the user guide.

Larry


On Mon, May 17, 2010 at 4:15 AM, Nicolas ANTONIAZZI
<[hidden email]> wrote:
> Hi,
> Is it possible to pass multiple parameters in iBatis3 without having to pass
> a map or a bean ?
> example :
> ------------- UserMapper.xml ------------
> <select id="selectUsers" parameterType="hashmap" resultType="List<User>">
>   SELECT * FROM user OFFSET #{offset} LIMIT #{limit}
> </select>
> ------------- UserMapper.java -----------
> public interface UserMapper {
>   public List<User> selectUsers(HashMap<String, Integer> parameters);
> }
> -----------------------------------------
> Now, I can call my statement with :
>
> int offset = 10;
> int limit = 10;
> UserMapper userMapper = session.getMapper(UserMapper.class);
> HashMap<String, Integer> parameters = new HashMap<String, Integer>();
> parameters.put("offset", offset);
> parameters.put("limit", limit);
> List<Question> selections = questionMapper.selectQuestions(parameters);
> ------------------------------------------
> I think that a cleaner way would be to do somethink like :
> public interface UserMapper {
>   public List<User> selectUsers(int offset, int limit);
> }
> UserMapper userMapper = session.getMapper(UserMapper.class);
> List<Question> selections = questionMapper.selectQuestions(10, 10);
> -------------------------------------------
> Is there such a method to achieve it with iBatis 3 ?
> Thanks,
> Nicolas ANTONIAZZI.

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]