一、前言
最近有个需求,需要一个传入string数组返回string数组的sql逻辑。
懒得封装成javabean了,于是就写了一个简单的样例,总结下。
二、代码
1.mapper.java,可以这样写:
public interface MyMapper {String[] findUserIdsByStudentIds(String[] studentIds);}
2.mapper.xml,可以这样写:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.my.mapper.MyMapper "><select id="findUserIdsByStudentIds" resultType="java.lang.String" parameterType="java.lang.String"><![CDATA[ SELECT user_id FROM mytable A ]]><where>student_id IN<foreach collection="array" item="item" open="(" separator="," close=")">#{item}</foreach></where></select></mapper>
这样,例如传入['1','2']
,就会执行:
SELECT user_id FROM mytable A where student_id IN ('1','2')
因为只查询一个字段,所以返回多行时就能返回string数组。(返回1行也是string数组)