Passing multiple arguments into a SELECT without using a complex object

后端 未结 5 2097
轻奢々
轻奢々 2020-12-15 11:39

I am trying to pass in startSequenceId, stopSequenceId, orderNumber into the SQL map, however, i don\'t wish to use a typed object, i.

5条回答
  •  孤街浪徒
    2020-12-15 12:17

    cant comment,

    Found the answer, thanks.

    http://code.google.com/p/mybatis/wiki/HowToSelectMultipleParams

    this link is broken, currently correct one is https://github.com/mybatis/mybatis-3/wiki/FAQ#how-do-i-use-multiple-parameters-in-a-mapper

    copy + paste from this wiki

    Java reflection does not provide a way to know the name of a method parameter so MyBatis names them by default like: param1, param2... If you want to give them a name use the @param annotation this way:

    import org.apache.ibatis.annotations.Param;
    public interface UserMapper {
       User selectUser(@Param("username") String username, @Param("hashedPassword") String hashedPassword);
    }
    

    Now you can use them in your xml like follows:

    
    

    tl;dr

    when you declare method in your interface instead of standard java structure

    Type methodName (
        ParamType1 paramName1,
        ParamType2 paramName2,
        … ); (this is interface so no method body)
    

    use (add @Param)

    Type methodName (
        @Param("name1 available in xml") ParamType1 paramName1,
        @Param("name2 available in xml") ParamType2 paramName2,
        …); (this is still interface so no method body)
    

提交回复
热议问题