数据库的表结构
表结构大致是这样的
我们要进行的查询如下:
使用mybatis 拼写的SQL
- xml文件主要内容如下
<resultMap type="TDevice" id="TDeviceResult">
<result property="id" column="id" />
<result property="deviceCode" column="device_code" />
</resultMap>
<sql id="selectTDeviceVo">
select id, device_code from t_device
</sql>
<select id="selectTDeviceByDeviceCodes" resultMap="TDeviceResult">
<include refid="selectTDeviceVo"/>
<where>
<if test="codes != null and codes != ''"> and device_code in
<foreach collection="codes" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</select>
- maper文件如下:
public List<TDevice> selectTDeviceByDeviceCodes(@Param("codes") String[] codes);
- service及impl如下
//impl
@Override
public List<TDevice>selectTDeviceByCodes(String[] codes){
return tDeviceMapper.selectTDeviceByDeviceCodes(codes);
}
//service
public List<TDevice> selectTDeviceByCodes(String[] codes);
注意事项
错误1: Parameter ‘codes’ not found. Available parameters are [array]]
解决办法:加上@Param(“codes”)
public List<TDevice> selectTDeviceByDeviceCodes(@Param("codes") String[] codes);
有的同学修改了映射文件的中的collection为Array,实测没有用,别白费功夫
<foreach collection="codes" index="index" item="item" open="(" separator="," close=")">
错误2:此类错误主要出现在参数输入上
我们输入的是个String[],请不要将参数写错,否则出现的错误就是没有查询的结果(PS:没有结果原因有三:数据库没数,查询条件有错,输入参数不存在)