mybatisplus 如何使用insertselect
时间: 2023-10-02 14:14:11 浏览: 233
Mybatis-Plus中的insertSelect是用来将查询结果插入到指定表中的操作。下面是使用insertSelect的示例代码:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(User::getAge, 18);
// 指定插入的表和列
String insertSql = "insert into user_copy(id, name, age) ";
// 执行查询并插入到指定表中
int result = userMapper.selectObjs(queryWrapper)
.stream()
.map(obj -> (User)obj)
.map(user -> insertSql + "values(" + user.getId() + ", '" + user.getName() + "', " + user.getAge() + ")")
.map(sql -> userMapper.insert(new SqlExpression(sql)))
.reduce(0, Integer::sum);
```
上述示例中,我们使用了Mybatis-Plus提供的查询构造器QueryWrapper,指定查询条件为年龄为18岁的用户。接着,我们将查询结果插入到user_copy表中,插入的列为id、name和age。具体实现中,我们使用了Java 8中的流式编程,将查询结果转换为User对象,并将每个对象转换为插入语句,最后使用reduce方法将所有插入操作的返回值相加,得到最终的结果。需要注意的是,为了将插入语句作为动态SQL执行,我们需要将其封装为SqlExpression对象。
阅读全文