Mybatis-plus使用selectMapsPage()查询,在数据库表中新增的字段,使用该方法返回结果中没有新增的字段
如何处理才能让表中新增的字段同步在查询结果中展示
![](https://profile-avatar.csdnimg.cn/b06b44930aea4acc8daf1ab0ed7a1208_weixin_60413624.jpg!4)
Mybatis-plus
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- Leodong. 2023-05-15 11:03关注
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
如果使用 Mybatis-plus 的selectMapsPage()
方法查询数据,而在数据库表中新增了字段,查询结果中没有新增的字段,这可能是因为 Mybatis-plus 的缓存机制导致的。解决这个问题的方法是清除 Mybatis-plus 的缓存,重新生成 SQL 语句,以便查询出新增的字段。以下是具体的步骤和代码实现:
1、 在 Mybatis-plus 的配置文件中,找到缓存配置,将缓存类型设置为
NONE
,表示禁用缓存:<!-- Mybatis-plus 配置 --> <configuration> <!-- 禁用缓存 --> <settings> <setting name="cacheEnabled" value="false" /> </settings> </configuration>
2、 在执行查询之前,手动清除 Mybatis-plus 的缓存,以便重新生成 SQL 语句:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; @Service public class UserService extends ServiceImpl<UserMapper, User> { @Resource private UserMapper userMapper; public List<Map<String, Object>> getUserList(int current, int size) { // 清除缓存 clear(); // 构造查询条件 QueryWrapper<User> wrapper = new QueryWrapper<User>() .select("id", "name", "age", "gender", "new_field") // 查询新增的字段 .orderByDesc("id"); // 分页查询 Page<Map<String, Object>> page = new Page<>(current, size); return userMapper.selectMapsPage(page, wrapper).getRecords(); } private void clear() { // 获取 Mybatis-plus 的缓存管理器 Cache cache = getBaseMapper().getSqlSession().getConfiguration().getCache("com.example.mapper.UserMapper"); // 清除缓存 cache.clear(); } }
在上述代码中,我们创建了一个
UserService
类,并在其中定义了一个getUserList()
方法,用于查询用户列表。在该方法内部,我们首先调用clear()
方法清除 Mybatis-plus 的缓存,然后构造查询条件,并使用selectMapsPage()
方法执行分页查询。需要注意的是,在
clear()
方法中,我们首先获取 Mybatis-plus 的缓存管理器,然后调用clear()
方法清除缓存。我们通过getBaseMapper()
方法获取到UserMapper
对象,并调用getSqlSession()
方法获取到 Mybatis 的SqlSession
对象,最后获取到缓存管理器。在获取缓存管理器时,需要指定 Mapper 的全限定名。这样,当我们使用
selectMapsPage()
方法查询用户列表时,就能够获取到新增的字段了。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 Qt4代码实现下面的界面
- ¥15 prism提示我reinstall prism 如何解决
- ¥15 asp.core 权限控制怎么做,需要控制到每个方法
- ¥20 while循环中OLED显示中断中的数据不正确
- ¥15 这个视频里的stm32f4代码是怎么写的
- ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
- ¥15 请教SGeMs软件的使用
- ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
- ¥50 深度学习运行代码直接中断
- ¥20 需要完整的共散射点成像代码