Use List of Parameters in Annotation-based Query

Possible using MyBatis Dynamic SQL feature

package com.hascode.example.mybatis;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface SampleMapper {

    @Select({"<script>",
             "SELECT sample.bar",
             "FROM sampletable sample",
             "WHERE sample.id IN",
            "<foreach item='item' index='index' collection='ids'",
            "open='(' separator=',' close=')'>",
            "#{item}",
            "</foreach>",
            "</script>"})
    List<Foo> getSamplesMatchingIds(@Param("ids") List<String> ids);
}

The mapper may now be used with a list of parameter objects:

var samples = sampleMapper.getSamplesMatchingIds(List.of("24059e5b-aa07-424d-855e-50f499b8f697", "65140fc0-fc9f-42d2-9531-5e5d6caeba30"));

Call a Procedure

package com.hascode.example.mybatis;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.mapping.StatementType;

@Mapper
public interface SampleMapper {

    @Select("CALL SCHEMA.CL.setScope(#{scope})")
    @Options(statementType = StatementType.CALLABLE)
    void setScope(int scope);
}

Calling it this way:

sampleMapper.setScope(123);