还在继续奋斗spring+mybatis,今天是空指针问题

xiang159349 2017-03-15 10:13:25
WebApplicationContext wac = WebApplicationContextUtils
.getWebApplicationContext(this.getServletContext());
UserDao userDao = (UserDao) wac.getBean("userDaoImpl");
int count = userDao.countUser();// 获得表中数据量
%>

<%
for(int i=0; i<3; i++){
User user = userDao.findUserById(i);
%><tr><td><%=user.getname().toString() %></td><td><%=user.getgender() %></td>
<td><%=user.getjob().toString() %>
</td><td><%=user.getindate().toString() %></td><td></=user.getable() %></td>
<td>修改 删除</td>
</tr><br/><%
}}
catch(Exception e){%>user is null<br/><%}
%>
</table><br/>
<%=userDao.findUserById(1)%><br />
<%=userDao.findUserById(2)%><br />
<%=userDao.findUserById(3)%><br />

还是用的这篇文章中的例子来改的,数据库有换不过也改写了User类没问题
Mybatis+Spring整合创建Web项目
http://blog.csdn.net/evankaka/article/details/45745345
User类本身提供了User.tostring方法的重写,可以把类中的所有元素集合成一个string方便输出
@Override
public String toString() {
return "职工 [姓名=" + name + ", 性别=" + gender+ ", 职位=" + job
+ ", 入职日期=" + indate+ ", 账户状态=" + able + "]";
}
我现在想把User中的各个元素分离出来填到表格中,<tr><td><%=user.getname().toString() %></td><td><%=user.getgender() %></td>,接着就一直在报nullpointer的错了,错误指示是在填表格这儿。
下面表格之外的几行输出反而都正常,是调用了复写的tostring方法
...全文
263 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiang159349 2017-03-16
  • 打赏
  • 举报
回复
把Dao接口中的方法参数和Mapper接口中的方法参数设置成一致后就没事了= = 还是很迷啊,我试用了insert、delete、update、select,其中delete一次性弄好暂时不提, insert和update因为id列设置了自增长所以设置参数时只用了除id外的其他列,结果就经常报“找不到参数xx”的错,把参数名改成#{1}之类的就不报这个错了,可是变成了插入数据库操作错误了
xiang159349 2017-03-15
  • 打赏
  • 举报
回复
引用 3 楼 freekaiQaQ 的回复:
mybatis 可以定义结果返回类型的,你resultType可以 指向 user这个


<select id="methodName" resultType="xx.xx.user" >
</select>
我在mybatis的mapper.xml里设置了这个,所以调用userDao.findUserById(i)这个的时候返回的就是User类型 按尝试的结果来看是user=userDao.findUserById(i)时右边得到的User型结果没有成功赋值给变量user 我试了先new一下变量user再赋值,还是没解决
freekaiQaQ 2017-03-15
  • 打赏
  • 举报
回复
mybatis 可以定义结果返回类型的,你resultType可以 指向 user这个


<select id="methodName" resultType="xx.xx.user" >
</select>
xiang159349 2017-03-15
  • 打赏
  • 举报
回复
=userDao.findUserById(i).getname().toString() 直接用这个mybatis访问数据库的语句写就没问题,还是不懂为什么我定义的User变量无法得到mybatis查询数据库的返回结果
xiang159349 2017-03-15
  • 打赏
  • 举报
回复
User user = userDao.findUserById(i); 刚刚试了一下发现是从这儿就开始是空的了,右边的函数明明返回了一个User类型的数据,为什么左边的User型变量还是空的呢?
xiang159349 2017-03-15
  • 打赏
  • 举报
回复
引用 5 楼 jkdcoach 的回复:
我觉得你最好把for循环先写完,然后把数据存起来,再去<%=取得数据,你直接把<%=写在了循环里可能会空指针的
我直接用userDao在for循环里调用findUserById(i)就没问题,就是在把函数返回值赋给user变量时出错了,user变量一直都是空的
翻滚啊牛宝宝 2017-03-15
  • 打赏
  • 举报
回复
我觉得你最好把for循环先写完,然后把数据存起来,再去<%=取得数据,你直接把<%=写在了循环里可能会空指针的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧