1,save方法经过注释掉一行源码后可以使用(经过修改com.jfinal.plugin.activerecord.Model的save()方法,将getGeneratedKey(pst, tableInfo.getPrimaryKey())
注释掉后可使用);
2,update方法怎么写,改为使用Db.update方法?
3,deleteById仅支持单主键,多主键使用Db.update方法?
建表语句(keyInt及keyStr为主键):
CREATE TABLE "multikey" (
"keyInt" int(11) NOT NULL,
"keyStr" varchar(255) NOT NULL,
"colStr" varchar(40) DEFAULT NULL,
PRIMARY KEY ("keyInt" ASC, "keyStr" ASC)
)
;
以下为操作代码:
package com.demo.multikey;
import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.plugin.activerecord.Db;
/**
* MultikeyController
*/
@Before(MultikeyInterceptor.class)
public class MultikeyController extends Controller {
public void index() {
list();
}
public void list() {
setAttr("multikeyList", Multikey.dao.find("select * from multikey order by keyInt asc"));
render("multikey.html");
}
public void add() {
render("add.html");
}
@Before(MultikeyValidator.class)
public void save() {
// 经过修改com.jfinal.plugin.activerecord.Model的save()方法
// 将getGeneratedKey(pst, tableInfo.getPrimaryKey());注释掉后可使用
getModel(Multikey.class).save();
list();
}
public void edit() {
// findById仅支持单主键,多主键使用findFirst或find().get(0)
setAttr("multikey", Multikey.dao.findFirst("select * from multikey where keyInt=? and keyStr=?", getParaToInt(0), getPara(1)));
render("edit.html");
}
@Before(MultikeyValidator.class)
public void update() {
// 此方法不能使用,改为使用Db.update方法?
getModel(Multikey.class).update();
list();
}
public void delete() {
// deleteById仅支持单主键,多主键使用Db.update方法
Db.update("delete from multikey where keyInt=? and keyStr=?", getParaToInt(0), getPara(1));
list();
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
出于简单考虑,JFinal ActiveRecord
对多主键没有提供完全的支持,但也可以支持多主键操作,如果需要使用多主键操作,那么可以使用 Db.update(...)Db.insert(...)
等等这类开发者能自主写sql的方法。