springboot结合MyBatis中使用foreach

废话少说,直接建项目上代码

先建一个springboot web项目或者模块,目录结构如下


在pom.xml中自行加入需要的依赖,application.properties的配置如下

server.port=8888 mybatis.mapper-locations=classpath*:mapper/*Mapper.xml spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=Panbing936@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

实体类User.java

@Data @NoArgsConstructor @AllArgsConstructor public class User {     private int id;     private String name; }

UserMapper.xml中

使用foreach接收list参数

 <!-- 使用foreach接收list参数 -->     <select id="getUsersByListParam" resultType="cn.niit.mybatisforeach.pojo.User">         select * from t_user         <foreach collection="list" item="item" open="where id in(" close=")" separator=",">             #{item}         </foreach>     </select>

使用foreach批量插入用户

<!-- 使用foreach批量插入用户-->     <insert id="insertMultiUsers">         insert into t_user(id,name)         values         <foreach collection="users" item="user" separator=",">             (#{user.id},#{user.name})         </foreach>     </insert>

使用foreach接收array数组

<!--使用foreach接收array数组-->     <select id="getUserByArrayList" parameterType="java.util.ArrayList" resultType="cn.niit.mybatisforeach.pojo.User">         select * from t_user where id in         <foreach collection="array" index="index" item="item" open="(" separator="," close=")">             #{item}         </foreach>     </select> 

使用foreach接收Map

<!--使用foreach接收Map-->     <select id="getUserByMap" parameterType="java.util.HashMap"             resultType="cn.niit.mybatisforeach.pojo.User">         select * from t_user where  id in         <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">             #{item}         </foreach>     </select>

UserMapper.java

 @Mapper @Component public interface UserMapper {     /**      * 多个参数查询user集合      */     List<User> getUsersByListParam(@Param("list") List list);     /**      * 使用foreach批量插入      */     int insertMultiUsers(@Param("users") List<User> users);      /**      * 使用foreach接收数组参数      */     List getUserByArrayList(int[] ids);      /**      * 使用foreach接收map      */     List getUserByMap(Map params); }

测试代码

MybatisForeachApplicationTests.java 中的代码如下

 @RunWith(SpringRunner.class) @SpringBootTest public class MybatisForeachApplicationTests {      @Test     public void contextLoads() {     }     /**      * 动态sql学习---foreach标签使用(查询)      */     @Autowired     private UserMapper userMapper;     @Test     public void dynamicSQLToForeach() throws IOException {             List<User> users = userMapper.getUsersByListParam(Arrays.asList(1,2,3,4));             for(User user:users) {                 System.out.println(user);             }     }      /**      * 动态sql学习---foreach标签使用(新增)      */     @Test     public void insertMultiUsers() throws IOException {             List<User> users = new ArrayList<User>();             users.add(new User(6,"陈大小姐"));             users.add(new User(7,"少主"));             users.add(new User(8,"天龙人"));             int count = userMapper.insertMultiUsers(users);             System.out.println("成功插入"+count+"条记录");     }      @Test     public void getUserByArrayList() {        int[] ids = new int[] {1,3,6,9};         List users = userMapper.getUserByArrayList(ids);         for (Object user:users)         {             System.out.println(user);         }     }      @Test     public void getUserByMapTest() {         final List ids = new ArrayList();         ids.add(1);         ids.add(2);         ids.add(3);         ids.add(6);         ids.add(7);         ids.add(9);         Map params = new HashMap();         params.put("ids", ids);         List users = userMapper.getUserByMap(params);         for (Object user : users)             System.out.println(user);     } }

github代码

个人网站

脚本宝典为你提供优质服务
脚本宝典 » springboot结合MyBatis中使用foreach

发表评论

提供最优质的资源集合

立即查看 了解详情