Users user = new Users(); user.setId(2); user.setUsername("123"); dao.update(user); 起作用就这几行,你其他属性都没覆盖 不然就写 hql set属性
Users user = new Users(); user是new出来的,字段均为空,下面你set了几个字段,剩余字段便都是空了 看你的代码,你可能是想从list中查找id 为2的user,然后update它的username为123 这样的话,代码要做修改
UserDao dao = (UserDao) ac.getBean("userDao"); Users user = new Users(); user.setId(2); List<Users> list = dao.findUserById(user.getId()); user = list.get(0); // 让user指向新查找出来的user,也就是 list.get(0) System.out.println(user.getUsername()); user.setUsername("123"); dao.update(user);
user.setId(2);
user.setUsername("123");
dao.update(user);
起作用就这几行,你其他属性都没覆盖
不然就写 hql set属性
看你的代码,你可能是想从list中查找id 为2的user,然后update它的username为123
这样的话,代码要做修改
UserDao dao = (UserDao) ac.getBean("userDao");
Users user = new Users();
user.setId(2);
List<Users> list = dao.findUserById(user.getId());
user = list.get(0); // 让user指向新查找出来的user,也就是 list.get(0)
System.out.println(user.getUsername());
user.setUsername("123");
dao.update(user);
user.setId(2);
List<Users> list = dao.findUserById(user.getId());
// for(Users users:list){
// System.out.println(users.getUsername());
// }
user.setUsername("123");
dao.update(user);
很明显,你新new 了一个 Users user = new Users();而你只给这个心new的user赋予了两个set值 user.setId(2); user.setUsername("123");其他字段当然为null
dao.update(user);楼主更新的是自己new的那个对象,当然别的属性为空了
new出来的User除了几个你SET的属性,其他值都是空的,
如果你要改查出来的user属性应该从list里面拿出user修改了,然后在update进去
因为hibernate 在更新的时候,如果你属性没有值的话,默认会给你一个null的值
new对象没执行一次
就会清空一次