救命啊!!!mybatis整合问题

用mybatis、struts2、spring3做的一个项目一切都是正常的。@AutowiredUserMapperuserMapper;publicUserfindUs... 用mybatis、struts2、spring3做的一个项目 一切都是正常的。
@Autowired
UserMapper userMapper;
public User findUser(String yhAcct) {
User u = userMapper.findUser(yhAcct);
return u;
}
想把struts2换成servlet
用struts2调用service层是正常的,能获得user对象
用servlet调用service时就报空指针,userMapper为null
求指教啊,是不是还有其他地方需要修改啊!!!!
图片出来了么?
展开
 我来答
zhaotao_king
2012-05-09 · TA获得超过2455个赞
知道大有可为答主
回答量:863
采纳率:0%
帮助的人:1112万
展开全部
@Autowired
UserMapper userMapper;
public User findUser(String yhAcct) {
User u = userMapper.findUser(yhAcct);
return u;
}
1.@Autowired可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。spring中需进行配置
<context:component-scan base-package="包" />
<context:annotation-config/>
才会生效
2.UserMapper
应该是mybatis的mapper文件对应的dao接口吧?
需要保证spring中需要将sqlSessionFactory和mapperInterface引入
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="包.UserMapper " />
</bean>

servlet替代struts2并不会导致userMapper为null,请检查上面说的部分,。

3.servlet替代struts2后,注意service类实例是否存在!~

good luck!~
追问
谢谢!!又仔细的试了一下 还是不行 你说的这几个都没问题

和用struts2唯一不一样的就是public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UserInfoServiceImpl userService = new UserInfoServiceImpl();
User u = userService.findUser("1001");
}这个了,service类我直接用实现类实例化的 里面打印肯定是进去了,就是mapper为空 快抓狂了……
追答
包名需要全路径!~比如com.service.xxx
servlet贴出来看看
aqi314819950
2012-05-09 · TA获得超过315个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:128万
展开全部
额 , 不是说换就能换的,没那么简单的。
有了mybatis、struts2、spring3 这几个框架 再加上 @Autowired这个标注,
那么 UserMapper userMapper;这个对象就会自动的赋值。(自动给赋值了,懂吧)

如果不用mybatis、struts2、spring3框架 就不会赋值,
当然会出现 “userMapper为null”为空的现象了。

你为何要使用servlet呢?
如果要使用servlet ,你就只能 显式地赋值了,
如:UserMapper userMapper=new UserMapper的实现类。
就可以了。
追问
谢谢!
但是mybatis里面UserMapper为接口 servlet要调用的话 是怎么显示赋值的?
追答
UserMapper是接口,但是这个接口应该有个实现类吧。 肯定有的。  
找到这个实现类,你用这个实现类来创建一个对象,赋值就OK了。

如果你真的要改成servlet的话,那么,基本上,在没一个 UserMapper userMapper都要new一个对象来给它赋值。 挺繁琐的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wms1755
2012-05-09
知道答主
回答量:45
采纳率:100%
帮助的人:6.8万
展开全部
用servlet时 你没有配置Spring吧。。
追问
servlet要在spring中配置么?
追答
Mybatis要在Spring中配置 。  你用了自动注入呀   你的service  也要配置Spring。在前台调用service的时候,要写注解。如 
@SpringBean
private Userservice service;

在UserService 类里的usermapper也要注解
@Autowired
UserMapper userMapper;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式