mybatis执行sql时,报错。从报错信息看,期望返回一个结果,但是返回了两个。查看数据库,发现确实有两条接口名一样的数据,所以根据接口名去查询的时候,会报这个错。
有两种解决方式,一种是在mapper文件中,加limit,限制只查一条数据。如果两条数据都想要可以定义一个list来接收返回结果
<select id="selectByInterfaceNameKey" parameterType="java.lang.String" resultMap="ResultMapWithBLOBs">
select
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from service_method_parameters_data
where interface_name = #{interfaceName,jdbcType=INTEGER}
order by id
</select>
修改持久层
修改前:
MethodParametersDOWithBLOBs selectByInterfaceNameKey(String interfaceName);
修改后:
List<MethodParametersDOWithBLOBs> selectByInterfaceNameKey(String interfaceName);
因为使用List接收返回对象,使用时需要先get
List<MethodParametersDOWithBLOBs> updateInterfaceStatus = methodParametersDOMapper.selectByInterfaceNameKey(currentMethodName);
for (int i = 0; i < updateInterfaceStatus.size(); i++) {
MethodParametersDOWithBLOBs methodParametersDOWithBLOBs = updateInterfaceStatus.get(i);
methodParametersDOWithBLOBs.setInterfaceCover(1);
methodParametersDOMapper.updateByPrimaryKey(methodParametersDOWithBLOBs);
}