表结构
现有一个列表,存放了3个手机号码: [1311, 1451, 2334] ,输入以下即可得结果
1
|
SELECT * FROM user_info where phone in (1311,1451,2334)
|
现在需求是我们有一个列表,其中存放电话号码,且个数不定,由此查出对应的个人信息。
代码部分
首先编写xml部分
1
2
3
4
5
6
7
|
<!-- 接收一个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接口,对应起来。如果对应不起来的话,会报找不到方法的错误
1
2
3
|
#application.yml
mybatis:
mapper-locations: classpath:mapper/**/*.xml
|
然后在Mapper部分
1
2
3
4
5
6
7
8
9
10
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
@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测试一下
测试成功。