2026/4/16 22:43:21
网站建设
项目流程
网站百度地图,深圳福田区住房和建设局网站官网,廊坊电子网站建设,长春工程公司招聘循环遍历集合/数组#xff0c;把集合元素拼接成sql片段#xff0c;动态处理多个参数的场景就比如#xff1a;简单场景的#xff1a;构建IN条件、批量查询用户列表、一次插入多个用户#xff0c;多对多关联表等等属性属性作用collection要遍历的集合/数组/Map的keyitem …循环遍历集合/数组把集合元素拼接成sql片段动态处理多个参数的场景就比如简单场景的构建IN条件、批量查询用户列表、一次插入多个用户多对多关联表等等属性属性作用collection要遍历的集合/数组/Map的keyitem当前元素的别名比如遍历users的每个元素的别名是userseparator元素之间的分隔符(IN条件会用“”隔开)open开头拼接(In条件开头用加()close结尾拼接(In条件结尾用加))collection传入List集合:例如ListInteger ids : 那就是 collectionlist传入数组:例如Integer[] ids:那就是 collectionarray传入Map例如MapString,List map ,其中key是ids,value是具体的id集合那collectionids——填 Map的key值如果用Param注解指定参数名了ListUser getAllByIds (Param(ids) ListInteger ids)那就用param注解里面的名字例子(一看就懂)构建IN条件(查询多个id的用户)ListUser selectByIds(Param(ids) ListInteger idList);select idselectByIds resultTypecom.example.User SELECT * FROM user WHERE id IN !-- 循环拼接 (1,2,3) -- foreach collectionids itemid separator, open( close) #{id} !-- 这里的id是item指定的别名对应集合中的每个元素 -- /foreach /select最终生成的sql语句就是 (如果idList[1,2,3])SELECT * FROM user WHERE id IN (1,2,3)批量插入int InsertUsers(Param(users) ListUser userList);insert idInsertUsers INSERT INTO user (name, age) VALUES !-- 循环拼接 (name1,age1),(name2,age2) -- foreach collectionusers itemuser separator, (#{user.name}, #{user.age}) !-- user是User对象别名可直接取属性 -- /foreach /insert最终生成的sql 如果userList有两个用户INSERT INTO user (name, age) VALUES (张三,20),(李四,22)批量插入角色-菜单关联关系比如给角色 ID1 绑定菜单 ID2、3、4会一次性插入 3 条记录(1,2)、(1,3)、(1,4)避免循环调用单条插入效率更高。int insertRoleMenu(Role role);//Role实体类里有roleId和menuIdinsert idinsertRoleMenu parameterTypecom.shenkong.entity.Role insert into t_role_menu(roleId, menuId) VALUES foreach collectionmenuIds itemmenuid separator, (#{roleId, javaTypejava.lang.Integer, jdbcTypeINTEGER}, #{menuid, javaTypejava.lang.Integer, jdbcTypeINTEGER}) /foreach /insert生成的sql语句insert into t_role_menu(roleId, menuId) VALUES (1, 2), (1, 3), (1, 4)