2018-12-25 18:13

@JFinal 好的,再次谢谢波总倾情答复

2018-12-25 18:07

@JFinal 好的,谢谢波总,还有个问题就是关于乐观锁的,我看了MysqlDialect类中forModelUpdate()方法构造sql语句非主键字段只能在set中,而不会出现在where中,这样就无法构造乐观锁sql语句
update `t_test` set `name` = ? and `version` = version + 1 where `id` = ? and `version` = ?,
请问有什么好的建议吗?关于乐观锁的

MysqlDialect中的forModelUpdate()方法的代码->

public void forModelUpdate(Table table, Map attrs, Set modifyFlag, StringBuilder sql, List paras) {
sql.append("update `").append(table.getName()).append("` set ");
String[] pKeys = table.getPrimaryKey();
for (Entry e : attrs.entrySet()) {
String colName = e.getKey();
if (modifyFlag.contains(colName) && !isPrimaryKey(colName, pKeys) && table.hasColumnLabel(colName)) {
if (paras.size() > 0) {
sql.append(", ");
}
sql.append('`').append(colName).append("` = ? ");
paras.add(e.getValue());
}
}
sql.append(" where ");
for (int i=0; i if (i > 0) {
sql.append(" and ");
}
sql.append('`').append(pKeys[i]).append("` = ?");
paras.add(attrs.get(pKeys[i]));
}
}

2018-12-25 17:55

@JFinal 谢谢波总回复,但还是有些疑问,我是用波总提供的方法构建级联,但是在前端(Beetl模板)渲染数据的时候,单单用merchant对象的时候,却把user对象的值也查出来了,但是代码里测试时又是延迟加载,是Beetl那边的问题吗?
(贴上部分代码)
model里的->
public class Merchant extends BaseModel{
......
private Integer userId
......
public User getUser(){
return UserService.me.findById(getUserId());
}
}
测试的->
public void testVersion(){
Merchant merchant = MerchantService.me.findById(1);
System.err.println(merchant)
//System.err.println(merchant.getUser().getUser_name());
success(merchant);
}