表定义:
create table test (
id serial primary key,
val int[]
);
Mapper类的定义:
int insertTest(@Param("valArray") Integer[] valArray);
xml文件:
重点是下面传入自定义的TypeHandler: typeHandler=IntegerArrayTypeHandler
<insert id="insertTest" parameterType="map">
insert into test(val) values (#{valArray,typeHandler=IntegerArrayTypeHandler })
</insert>
自定义的TypeHandler:
import org.apache.ibatis.type.ArrayTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class IntegerArrayTypeHandler extends ArrayTypeHandler {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
ps.setArray(i, ps.getConnection().createArrayOf("int", (Integer[])parameter));
}
}