[JAVA] [My Batis] List <Map <>> Pass als Mapper-Parameter verschachtelt

Ich möchte es verschachtelt im Mapper-Parameter von MyBatis übergeben!

--Map ist mit Schlüssel und Wert möglich --Liste kann normal verschachtelt werden

Umgebung

Entwicklungs-PC: Windows 10 STS: 4 mybatis:3.2.5 mybatis-spring:1.2.2 Java: 8

Offizielle Dokumentation

http://www.mybatis.org/mybatis-3/ja/dynamic-sql.html Keine besondere Erklärung für die Verschachtelung

SQL bereit

--Mapper: xml

SampleMapper.xml


  <select id="selectTestMapList" resultMap="BaseResultMap">
  SELECT
    sample.*
  FROM
    sample
  WHERE
    sample.id IN
    <foreach item="internalMap" collection="nestedMapList">
        <foreach item="value" index="key" collection="internalMap"  open="(" separator="," close=")">
            #{value}
        </foreach>
    </foreach>
  </select>

Java-Definition

SampleMapper.java


List<Sample> selectTestMapList(@Param("nestedMapList") List<Map<String, Integer>> nestedMapList);

Versuche zu rennen

TestMapperExecutor.java


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/sample/spring/test-context.xml"})
public class TestMapperExecutor {

	@Autowired
	private SampleMapper sampleMapper;

	@Test
	public void test() {
		List<Map<String, Integer>> nestedMapList = new CopyOnWriteArrayList<>();
		Map<String, Integer> internalMap = new ConcurrentHashMap<>();
		internalMap.put("iKey", 1);
		nestedMapList.add(internalMap);

		List<Sample> result = null;
		try {

			result = sampleMapper.selectTestMapList(nestedMapList);
		}
		catch (Throwable t) {
			t.printStackTrace();
		}

	}

}

Danke für deine harte Arbeit!

Recommended Posts

[My Batis] List <Map <>> Pass als Mapper-Parameter verschachtelt
Liste, Set, Karte
Array / Liste / Karte