mybatis單引數以及多引數集合查詢
單引數情況:
(1)array
List<CarnumberAlarm> selectByDeviceIdAndTime(String[] ids);
xml配置: <if test="ids != null and ids.length > 0" > deviceId in <foreach collection="array" open="(" separator="," close=")" item="item" index="index"> #{item,jdbcType=VARCHAR} </foreach> </if>
(2)list
List<CarnumberAlarm> selectByDeviceIdAndTime(List<String> ids);
xml配置: <if test="ids != null and ids.size() > 0" > deviceId in <foreach collection="list" open="(" separator="," close=")" item="item" index="index"> #{item,jdbcType=VARCHAR} </foreach> </if>
(3)map
List<CarnumberAlarm> selectByDeviceIdAndTime(Map<String, Object> params);
xml配置: <if test="ids != null and ids.size() > 0" > deviceId in
<!--collection屬性是map.key,其它所有屬性都是map.key--> <foreach collection="ids" open="(" separator="," close=")" item="item" index="index"> #{item,jdbcType=VARCHAR} </foreach> </if>
多個引數情況下,需要取別名:
(1)array
List<CarnumberAlarm> selectByDeviceIdAndTime(@Param("ids")String[] ids, @Param("startTime")Date startTime, @Param("endTime")Date endTime, @Param("pageIndex")Long pageIndex,@Param("pageSize")Long pageSize);
xml配置:
<!-- 根據裝置id列表以及起止時間分頁檢索 --> <select id="selectByDeviceIdAndTime" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from t_carnumber_alarm where alarmTime between #{startTime,jdbcType=TIMESTAMP} and #{endTime,jdbcType=TIMESTAMP} <if test="ids != null and ids.length > 0" > and deviceId in <foreach collection="ids" open="(" separator="," close=")" item="id" index="index"> #{id,jdbcType=VARCHAR} </foreach> </if> limit #{pageIndex,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER} </select>
(2)list
List<CarnumberAlarm> selectByDeviceIdAndTime(@Param("ids")List<String> ids, @Param("startTime")Date startTime, @Param("endTime")Date endTime, @Param("pageIndex")Long pageIndex,@Param("pageSize")Long pageSize);
xml配置:
<!-- 根據裝置id列表以及起止時間分頁檢索 --> <select id="selectByDeviceIdAndTime" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from t_carnumber_alarm where alarmTime between #{startTime,jdbcType=TIMESTAMP} and #{endTime,jdbcType=TIMESTAMP} <if test="ds != null and ids.size() > 0" > and deviceId in <foreach collection="ids" open="(" separator="," close=")" item="id" index="index"> #{id,jdbcType=VARCHAR} </foreach> </if> limit #{pageIndex,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER} </select>
(3)map
List<CarnumberAlarm> selectByDeviceIdAndTime(@Param("params")List<String> params, @Param("startTime")Date startTime, @Param("endTime")Date endTime, @Param("pageIndex")Long pageIndex,@Param("pageSize")Long pageSize);
xml配置:<!-- 根據裝置id列表以及起止時間分頁檢索 --> <select id="selectByDeviceIdAndTime" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from t_carnumber_alarm where alarmTime between #{startTime,jdbcType=TIMESTAMP} and #{endTime,jdbcType=TIMESTAMP} <if test="params!= null and params.size() > 0" > and deviceId in
<!--params.keys, params.values, params.鍵名--> <foreach collection="params.values" open="(" separator="," close=")" item="id" index="index"> #{id,jdbcType=VARCHAR} </foreach> </if> limit #{pageIndex,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER} </select>