java从数据库有些字段的值无法取出来,详细问题见内容

葱花鸡蛋 2017-01-04 04:28:22
1. applicationContext配置文件
<context:component-scan base-package="cn.fourinnovation.note"></context:component-scan>
<mvc:annotation-driven></mvc:annotation-driven>

<util:properties id="jdbc" location="classpath:jdbc.properties"></util:properties>

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="#{jdbc.driver}"></property>
<property name="url" value="#{jdbc.url}"></property>
<property name="username" value="#{jdbc.user}"></property>
<property name="password" value="#{jdbc.password}"></property>
</bean>

<bean id="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:cn/fourinnovation/note/sql/*.xml"/>
</bean>
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.fourinnovation.note.dao"/>
</bean>

2. service实现类代码
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
public NoteResult login(String email, String password) {
NoteResult result=new NoteResult();
//加密密码
String pwd=NoteUtil.md5(password);
User user=userDao.findByEmail(email);
if(user==null){
result.setStatus(1);
result.setMsg("用户不存在");
}else{
if(user.getPassword().equals(pwd)){
result.setStatus(0);
result.setMsg("账号和密码正确");
String token=NoteUtil.createToken();
Map<String,Object> data=new HashMap<String,Object>();
data.put("userToken", token);
//这里出了问题,user.getUserid()应该是有值的,但是它在这里却是null
data.put("userId", user.getUserid());
result.setData(data);
System.out.println(data);
userDao.updateToken(data);
}else{
result.setStatus(2);
result.setMsg("密码不正确");
}
}
return result;
}

上面代码的第20行代码user.getUserid()输出为null,但我在数据库里对应字段是有值的,也就是没有取出来,我的问题也是出在这里。我可以取出密码用user.getPassword。
3. dao包里interface代码
public interface UserDao {
public User findByEmail(String email);
public int save(User user);
public int updateToken(Map<String,Object> parameter);
public String findUserId(String email);
}

4. Mapper配置文件代码
<mapper namespace="cn.fourinnovation.note.dao.UserDao">
<select id="findByEmail" parameterType="string" resultType="cn.fourinnovation.note.bean.User">
select * from user where email=#{email}
</select>
<insert id="save" parameterType="cn.fourinnovation.note.bean.User">
insert into user (email,password,user_id) values (#{email},#{password},#{userid})
</insert>
<update id="updateToken" parameterType="map">
update user set usertoken=#{usertoken} where user_id=#{userid}
</update>
<select id="findUserId" parameterType="string" resultType="string">
select user_id from user where email=#{email}
</select>
</mapper>

5. User类代码
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
//邮箱
private String email;
//密码
private String password;
//用户序号
private String userid;
//用户口令
private String usertoken;

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getUserid() {
return userid;
}

public void setUserid(String userid) {
this.userid = userid;
}

public String getUsertoken() {
return usertoken;
}

public void setUsertoken(String usertoken) {
this.usertoken = usertoken;
}

}

6. NoteResult类代码
private int status;
private String msg;
private Object data;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}

7. 数据库的表结构

8. 项目的目录结构

9. 我后来在UserDao接口里又加了一个返回值是String类的方法,只取user_id就可以取出来,有人知道我的findByEmail方法为什么错了吗?
...全文
292 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
追梦_沙 2017-05-05
  • 打赏
  • 举报
回复
好 很好 非常好

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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