日期:2014-05-18  浏览次数:20693 次

菜鸟的Mybatis报错问题
是这样的,我在映射文件 UserInfMapper.xml文件里面写了

<!-- 对应的java文件定义:public UserInf selectPublicName(String userName); -->
   <select id="obtainedPublicName" resultType="zxw.model.UserInf" parameterType="java.lang.String">
   select * from userInf
   where user_name = #(userName,jdbcType=VARCHER)
   </select>

然后在UserInfMapper.java里面写到:

//对应的包package zxw.dao
public interface UserInfMapper {
    /**
     * 根据名字查询数据
     */
    UserInf obtainedPublicName(String userName);
}

之后,我在service包下面写:
//对应的包package zxw.service;
public interface UserInfServiceI { 
/**
 * 根据用户姓名查找用户是否存在
 * @param name:用户姓名
 * @return:用户信息
 */
public UserInf findByName(String userName);
}

--------------这些都没报错--------------
接下来:
我实现UserInfServiceI,写到:

//对应的包package zxw.service.impl;
@Service(value="userInfService")
public class UserInfServiceImpl implements UserInfServiceI {
@Autowired
private UserInfMapper userInfMapper;//spring autowired注入了
public UserInf findByName(String userName) {
return userInfMapper.obtainedPublicName(userName);
}
}

此时,报错,说:The method obtainedPublicName(String) is undefined for the type UserInfMapper

我不知道为什么会错,希望有朋友能指点下,帮我解决下问题

------解决方案--------------------
 select * from userInf where user_name = #(userName) 试试
------解决方案--------------------
报错是 类型匹配的问题。。clean,重启试试。    
------解决方案--------------------
还出什么问题。
------解决方案--------------------

<select id="obtainedPublicName" parameterType="String" resultType="zxw.model.UserInf">
        select * from user where userName=#{userName}
    </select>

 你确定   * 和  zxw.model.UserInf 里面的属性对应??

你  select * from user where userName=#{userName}  这个先改查 select userName from user where userName=#{userName} 看看
------解决方案--------------------
@Autowired
    private UserInfMapper userInfMapper;//spring