廖___ 2021-01-28 12:41 采纳率: 100%
浏览 663
已采纳

mybtis使用pagehelper的时候发生空指针异常(问了朋友同事都不知道错在哪)

1.spring boot使用pagehelper的时候mybatis显示报空指针异常

2.如果不加分页就没有这个错误,但是查出来的就不是分页的效果

3.别的接口也是调用这个分页方法,但是能够正常分页

代码如下

//查询所有用户的controller层
@RequestMapping(value = "/tapapi/system/users/get", method = RequestMethod.GET)
public Message query(User user, HttpServletRequest request) {
	setPageInfo(request, user); // 对http请求结果进行分页
	List<User> list = userService.selectList(user);
	return getDataMessage(list);
}

//这个是查询所有用户的service层
@Override
public List<User> selectList(User user) {
	List<User> list = userDao.selectUserList(user);
	for (User user1:list){
		Role role =roleDao.selectByPrimaryKey(user1.getRoleId().intValue());
		user1.setRoleName(role.getRoleName());
	}
	return list;
}

//mybatis
  <select id="selectUserList" resultMap="BaseResultMap">
    select  <include refid="Base_Column_List" />
    from sys_user
    <where>
      <if test="searchValue != null and searchValue != ''">AND userName like concat('%',#        {searchValue},'%') </if>
      <if test="status !=null ">And status = #{status}</if>
      <if test="userName !=null and userName!='' ">And userName = #{userName}</if>
    </where>
  </select>
//分页的方法
/**
	 * 设置请求分页数据
	 */
	protected void setPageInfo(HttpServletRequest request,Object obj) {
		PageDomain page = (PageDomain) obj;
		analyzeRequest(request,page);
		if (page.getPage()!=null && page.getCount()!=null) {//angularJs
			PageHelper.startPage(page.getPage(), page.getCount(), page.getOrderBy());
		}
	}
	/**
	 * @Title: analyzeRequest 
	 * @Description: 解析请求参数中的Filter 和  sort
	 * @param request HttpServletRequest
	 * @param page PageDomain
	 */
	private void analyzeRequest(HttpServletRequest request, PageDomain page) {
		String searchValue = request.getParameter("searchValue");
		if(StringUtils.isNotBlank(searchValue)){
			try {
				page.setSearchValue(URLDecoder.decode(searchValue,"utf-8"));
			} catch (UnsupportedEncodingException e) {
				e.getStackTrace();
			}
		}
		//解析sort
		Map<String, String[]> paramMap = request.getParameterMap();
		for(Map.Entry<String, String[]> entity:paramMap.entrySet()){
			String key = entity.getKey();
			if(key.startsWith("sorting")){
				int start = key.indexOf('[');
				int end = key.indexOf(']');
				page.setSort(key.substring(start+1, end));
				page.setIsAsc(entity.getValue()[0]);
				break;
			}
		}
		
	}

下面是报错的截图,这里的com.vcmy.dao.UserDao.selectUserList_COUNT好像是上面的pagehelper执行的sql语言不是我写的,问题是别的接口也是用这种方法可以正常查询出来

展开全部

  • 写回答

3条回答 默认 最新

  • 廖___ 2021-02-01 06:18
    关注

    本人已经解决,因为项目引入了spring security所以User对象里面要加上getAuthorities方法,使用PageHelper.startPage(page.getPage(), page.getCount(), page.getOrderBy());进行分页的时候底层有个操作是将user对象里面的属性put进map的操作,但是getRoleId()为空值,一开始我没有加上判断空操作,导致到authorities的时候报错了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 ArcGIS Pro时空模式挖掘工具
  • ¥15 获取到海康hls的视频地址是http协议导致无法正常播放
  • ¥15 seL4如何实现从终端输入数据
  • ¥15 方波信号时频特征分析/信号调制与解调过程分析/利用DFT分析信号频谱
  • ¥20 两台硬件相同的琴设备一个是高阶版,怎么扒到初阶版
  • ¥30 matlab求解周期与坐标
  • ¥15 MATLAB图片转灰度格式问题
  • ¥15 把h5作品链接复制到自己的账号里
  • ¥15 ensp抓包实验配置
  • ¥15 强化学习算法、MRO
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部