mybatis的foreach的3种使用方法
用mybatis实现select 字段 from table where id in(1,2,3,4,5)的sql语句:
mybatis提供的foreach可以实现,foreach有3种传值方式:array,list,map.
其中Array的mapper写法:
<select id="selectUserArr" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
from user
where id in
<foreach collection="array" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
注:array的写法中collection中的值必须是array,不能写Array,会报错的。但传参的命名可以不是array
List<User>selectUserArr(int []arr);
List<User>userArray=userMapper.selectUserArr(arr);
list的写法:
<select id="selectUserList" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
from user
where id in
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
注:list写法中collection中的值必须是list,也不能是List,但传来的参数命名可以不一定是list
List<User>selectUserList(List list1);
List<User>userList=userMapper.selectUserList(list1);
map的写法:
<select id="selectUserMap" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
from user
where id in
<foreach collection="map1" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
注:map写法中的collection中填的是map的key值,不对应就会报错
List<User>selectUserMap(Map map);
map.put("map1",map1);
List<User> userMap=userMapper.selectUserMap(map);
在springboot的启动类测试:
@SpringBootApplication
@MapperScan("springboot.mapper")
public class Application
{
public static void main( String[] args )
{
ApplicationContext context = SpringApplication.run(Application.class, args);
UserMapper userMapper=context.getBean(UserMapper.class);
int []arr=new int[5];
List list1=new ArrayList();
Map<String,Object> map=new HashMap<String, Object>(5);
int i;
for(i=1;i<5;i++){
arr[i-1]=i;
list1.add(i);
}
int []map1={1,2,3,4,5};
map.put("map1",map1);
List<User>userArray=userMapper.selectUserArr(arr);
List<User>userList=userMapper.selectUserList(list1);
List<User> userMap=userMapper.selectUserMap(map);
System.out.println("Array=============");
sys(userArray);
System.out.println("list=============");
sys(userList);
System.out.println("map:================");
sys(userMap);
public static void sys(List<User> list){
for (User user : list){
System.out.println("user:"+user.toString());
}
}
}