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代码
相关推荐
xiuyangsong 2020-11-16
Nishinoshou 2020-11-09
jimgreatly 2020-09-01
dongxurr 2020-08-18
Dullonjiang 2020-08-15
Dullonjiang 2020-08-11
Dullonjiang 2020-08-09
dongxurr 2020-08-08
yunzhonmghe 2020-08-07
jimgreatly 2020-08-03
Dullonjiang 2020-07-30
jimgreatly 2020-07-27
liqiancao 2020-07-26
xiuyangsong 2020-07-26
dongxurr 2020-07-26
mcvsyy 2020-07-26
helloxusir 2020-07-25
牧场SZShepherd 2020-07-20