2019-10-30 15:04
@JFinal 额,我不是这个需求… 麻烦看一下,新鲜出炉的栗子:
——这是数据表结构——
CREATE TABLE `test_table` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`a` bigint(11) NOT NULL DEFAULT '0',
`b` bigint(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
——这是测试用代码——
TestTable model = new TestTable();
model.setA((long) 1); // set a ,不 set b
model.removeNullValueAttrs(); // 这些 solution 解决不了问题
model.remove("b"); //
model.keep("id", "a"); //
model.save(); // save 成功后,数据库里的 a 为 1, b 为 0
System.out.println(model.getA()); // 输出 1
System.out.println(model.getB()); // 输出 null (问题所在,即使采用上述三种方法都不行)
model = model.findById(model.getId()); // 解决方案:重新取一次该 model (用dao也可以)
System.out.println(model.getA()); // 输出 1
System.out.println(model.getB()); // 输出 0
————
所以,我的需求是,有没有比 “重新取一次” 更好的方法,使 model.getB() 得出 0 而非 null _(:з」∠)_
2019-10-30 11:38
@JFinal 数据库表那边的字段都已经设置好了默认值了啊,但问题不是save()后直接裸调用原model的get方法,对这些字段取出来的仍然是null么
(还是我哪个地方理解错了?。)
2019-10-30 11:19
@JFinal 谢谢!
不过我目前的情况是
比如一条当日统计数据,可能只有两三个三五个字段有设定值,剩下一二十个字段都是(在数据库里)默认0
如果这么做的话,不可避免要写很长的重复性代码?
真的没有什么除了 “再取一次” 外的 简洁实现方法了麽 QAQ