表结构

现有一个列表,存放了3个手机号码: [1311, 1451, 2334] ,输入以下即可得结果

SELECT * FROM user_info where phone in (1311,1451,2334)

现在需求是我们有一个列表,其中存放电话号码,且个数不定,由此查出对应的个人信息。

代码部分

首先编写xml部分

<!--    接收一个list,返回一个list<map>-->
<select id="getUserInfoByPhone" parameterType="list" resultType="map">
        SELECT * FROM user_info where phone in
        <foreach collection="list" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
</select>

将mybatis的xml文件和mapper接口,对应起来。如果对应不起来的话,会报找不到方法的错误

#application.yml
mybatis:
  mapper-locations: classpath:mapper/**/*.xml

然后在Mapper部分

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface ListInSqlMapper {
    List<Map<String, Object>> getUserInfoByPhone(@Param("list") List<String> phoneNum);
}

然后写Controller

@RestController
public class ListInSqlController {

    @Autowired
    private ListInSqlMapper listInSqlMapper;

    @GetMapping(value = "/userbyphone")
    public List<Map<String, Object>> getUserInfoByPhone() {
        //其中为了测试,直接在本地指定几个号码
        List<String> phoneNum = new ArrayList<>();
        phoneNum.add("1311");
        phoneNum.add("1451");
        phoneNum.add("2334");
        phoneNum.add("2333");
        return listInSqlMapper.getUserInfoByPhone(phoneNum);
    }
}

查询结果

接下来用postman测试一下

测试成功。

最后修改:2020 年 03 月 20 日 11 : 37 AM
如果觉得我的文章对你有用,请随意赞赏