gpt4 book ai didi

java - 如何使用Spring事务管理将当前用户更新到数据库?

转载 作者:行者123 更新时间:2023-12-02 01:48:10 24 4
gpt4 key购买 nike

例如:登录用户是 [test2],我想更新 mAccountmPassword
如何获取登录 session 并点击jsp表单进行更新?

(mId 是主键)

我应该做什么?

当我点击提交更新 SQL 数据库时,mAccountmPassword 未更新。

我认为我的 Controller 在获取登录 session 时一定有问题,所以我无法更新我想要的内容。我点击了一遍又一遍,但是SQL数据库仍然没有任何变化, Controller 没有得到test2对象来更新。如何修复 Controller 让我很困惑和焦虑。这个问题花了我1个星期......

SQL成员数据库:

enter image description here

Edit: Was same image as above, likely missing the intended one UpdateMemberController debug mode:

<code>UpdateMemberController</code> debug mode

bean :

private Integer mId;
private String mAccount;
private String mPassword;
private String mName;
private Date mDate;
private String mPhone;
private String mAddress;
private String mGender;
private String mEmail;

成员(member)道:

public void setConnection(Connection conn);
public boolean checkAccount(String mAccount);
public int registerMember(MemberBean mb);
public MemberBean queryMember(String mAccount);
public MemberBean checkPassword(String mAccount, String mPassword);
public void updateMember(MemberBean mb);

DaoImpl:

@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();

}

成员(member)服务:

boolean accountCheck(String mAccount);
int registerMember(MemberBean mb);
MemberBean queryMember(String mAccount);
public MemberBean checkPassword(String mAccount, String mPassword);
void updateMember(MemberBean mb );

MemberServeImpl:

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

最佳答案

对于开发人员来说,如果掌握了调试技能,就没有什么比这更大的挑战了。如果有任何事情给开发人员带来问题,他应该捕获并解决它。

  1. 检查 hibernate.properties 中您已连接的数据库。如果您连接到不同的数据库,则那里可能会发生更新。(如果步骤1没有问题)

  2. 直接跳转到调试您的 dao 实现。(updateMember() 方法)

    • 确认 updateMember 方法是否被调用。(只需输入 print 语句)
    • 首先打印 mAccount、mPassword 和 mId
    • 如果打印正确,则将创建查询并执行更新放在 try catch block 中,并且不要忘记在 catch block 中打印。
    • 如果未捕获异常,则打印executeUpdate 返回类型。
    • 如果executeUpdate 为零,则转到步骤 3。

第3步:为什么它没有更新到数据库。我正在提交交易吗?
如果我依靠 spring 来管理事务(开始、提交/回滚),那么问问自己我是否正确配置了它?
(即使我没有在 Spring 进行事务处理,让我猜猜你的问题)
Spring容器是否使用@Transactional获取服务方法?
您的组件扫描基础包是什么?您的服务的包名称是什么?
是否扫描您的服务类中的组件?

注意:

Add necessary information in your question
Add servlet-context.xml(in xml configuration) or equivalent java configuration file
Add root-context.xml (in xml configuration) or equivalent java configuration file

Filter question or remove unnecessary information
Bean(required)
MemberDao(required)
MemberService(required)
MemberSeriveImpl(required)
controller(Not required)
jsp(not required)

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com