发现一个奇怪的问题

floatboy3 2011-07-18 11:09:20


调试的时候 personMappper 上方显示的Value 为$Proxy28 ,下面为什么显示的是null


public class PersonDaoImpl extends BaseMybatisDao implements PersonDao {

@Inject private PersonMapper personMapper;

/* (non-Javadoc)
* @see com.desksoft.ecommerce.dao.interf.logistics.PersonDao#getPersonByKey(com.desksoft.ecommerce.entity.logistics.dto.PersonKey)
*/
@Override
public Person getPersonByKey(PersonKey personKey) {
PersonExample pe = new PersonExample();
pe.createCriteria().andPersidEqualTo(personKey.getPersid()).andUseridEqualTo(personKey.getUserid());
System.out.println(personMapper);
return Iterables.getOnlyElement(personMapper.selectByExample(pe), null);
}


}

程序运行没问题,打印 personMapper 显示出来的也是null.
personMapper 是Mybatis 通过MapperScannerConfigurer 自动侦测注入进来的,应该是生成一个代理,就是不明白personMapper怎么是null?高手指教下啊
...全文
130 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
老张-AI 2011-07-18
  • 打赏
  • 举报
回复
没明白你要说什么
floatboy3 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 alexandertech 的回复:]
到底是null正常还是不是null正常?
[/Quote]
现在知道了,只有再用到的时候,才动态生成对象,一开始是为null的
floatboy3 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zl3450341 的回复:]
没明白你要说什么
[/Quote]
额,表达的不够明白。。。
floatboy3 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhangjinglovejava 的回复:]
如果底层是hibernate的话 由于hibernate默认的是懒加载模式 所以 当你查询数据库的时候 得到的不是你真正想得到的对象 只有当你真正使用这个对象的时候 才会使用代理对象中的key(id) 然后真正的去数据库中查询对应的数据
student stu=this.getHibernate....();
上面调试时 stu仍然是一个代理对象


只有当你stu.username……
[/Quote]
恩,确实是这么回事,现在知道了,谢谢啊
zhangjingLoveJava 2011-07-18
  • 打赏
  • 举报
回复
如果底层是hibernate的话 由于hibernate默认的是懒加载模式 所以 当你查询数据库的时候 得到的不是你真正想得到的对象 只有当你真正使用这个对象的时候 才会使用代理对象中的key(id) 然后真正的去数据库中查询对应的数据
student stu=this.getHibernate....();
上面调试时 stu仍然是一个代理对象


只有当你stu.username时 才会真正的产生对象 不再为null

飞跃颠峰 2011-07-18
  • 打赏
  • 举报
回复
到底是null正常还是不是null正常?

81,122

社区成员

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

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