java - 如何使用 Spring MVC 更新我当前的用户数据?

标签 java spring hibernate spring-mvc jsp

我是初学者学习spring MVC,现在我有一个问题无法解决。我花了很多时间想用Spring MVC来更新当前用户数据,但总是兜圈子。

例如登录用户是[test2],我想更新mAccount和mPassword,如何获取登录 session 并单击jsp表单进行更新。我应该做什么?(mId是主键)

现在当我点击提交更新时,但是SQL数据库mAccount和mPassword没有任何变化。 我认为我的 Controller 在获取登录 session 时一定有问题,所以我无法更新我想要的内容。

请原谅我的英语不好,请帮我解决这个问题。 我真的需要帮助!

SQL成员数据库图像链接:

enter image description here

这是我的问题链接:(内含完整代码)

enter link description here

道:

public MemberBean getMemberBymId(int mId);

DaoImpl:

    @Override
public MemberBean getMemberBymId(int mId) {
    MemberBean mb = null;
    Session session = factory.getCurrentSession();
    String sql = "FROM MemberBean mb WHERE mb.mId=:mid";
    mb = (MemberBean) session.createQuery(sql).setParameter("mid", mId).uniqueResult();
    return mb;
}
@Override
public void updateMember(MemberBean mb) {

    String hql = "UPDATE MemberBean mb SET mb.mAccount =:mAccount , mb.mPassword =:mPassword WHERE mId =:mId";
    Session session = factory.getCurrentSession();

    session.createQuery(hql).setParameter("mAccount", mb.getmAccount()).setParameter("mPassword", mb.getmPassword())
            .setParameter("mId", mb.getmId()).executeUpdate();

}

服务:

MemberBean getMemberBymId(int mId);

void updateMember(MemberBean mb );

服务实现:

@Transactional
@Override
public MemberBean getMemberBymId(int mId) {
    MemberBean mb = null;
    mb = dao.getMemberBymId(mId);
    return mb;
}

@Transactional
@Override
public void updateMember(MemberBean mb) {
    if (mb.getmAccount() != null && mb.getmPassword() != null) {
        dao.updateMember(mb);
    }
}

Controller :

@RequestMapping(value = "/UpdateMemberForm/{mId}", method = RequestMethod.GET)
public String AddLoginMemberBeantoUpdateForm(Model model,HttpSession session,@PathVariable Integer mId) {
    MemberBean mb = memberservice.getMemberBymId(mId);
    model.addAttribute("MemberBean", mb);
    return "register/updateMember";
}

@RequestMapping(value = "/UpdateMemberForm", method = RequestMethod.POST)
public String UpdateMember(@ModelAttribute("MemberBean")MemberBean mb, BindingResult result ) {

    memberservice.updateMember(mb);
    return "index";
}

Jsp:

    <form:form method="POST"  modelAttribute="MemberBean">
        <table>
            <tr>
                <td>帳號:</td>
                <td><form:input id="mAccount"  path="mAccount" type="text" value="${mb.mAccount}"
                     size="10"/>
                </td>
            </tr>
            <tr>
                <td>密碼:</td>
                <td><form:input id="mPassword"  path="mPassword" type="text" value="${mb.mPassword}"
                     size="10"/>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align: center"><input type="submit" value="更新"  > 
                </td>
            </tr>
        </table>            
    </form:form>

最佳答案

如果我错了,请纠正我,您想更新帐户,我认为问题在于 updateMember 函数。

   //Let me show a example update a object.
  Customer customerToUpdate = customerRepository.getOne(id);
  customerToUpdate.setName(customerDto.getName);
  customerRepository.save(customerToUpdate);
  //But your code directly updating a user account without find  the user  which is gonna changed.I could't examine full of codes but ı think problem occurs here.
      memberservice.updateMember(mb);

关于java - 如何使用 Spring MVC 更新我当前的用户数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57806311/

相关文章:

java - Spring 和 Hibernate 突然将事务设置为只读

hibernate - Spring/Hibernate 延迟加载需要帮助

mysql - 如何在 Hibernate 中为每个公司创建一个 customerNumber 生成器

java - 在 MYSQL 数据库中存储 base64 字符串的最佳方法是什么?

java - 创建新类对象时出现另一个 'cannot find symbol' 错误

Java:随机生成的零数

java - 使用 Java 编写 SSL 检查器

java - 删除前检查是否违反外键约束

java - 使用 Spring Roo Activity 记录模式将实体保存回数据库

Java:split() 返回 [Ljava.lang.String;@186d4c1],为什么?