0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# mybatis的foreach的3种使用方法

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());
}
}
}




举报

相关推荐

0 条评论