JFinal ??? ???
/ 表關聯操作
表關聯操作
JFinal ActiveRecord 天然支持表關聯操作,并不需要學習新的東西,此為無招勝有招。表 關聯操作主要有兩種方式:一是直接使用 sql 得到關聯數據;二是在 Model 中添加獲取關聯數據的方法。
假定現有兩張數據庫表:user、blog,并且 user 到 blog 是一對多關系,blog 表中使用 user_id關聯到 user 表。如下代碼演示使用第一種方式得到 user_name:
public void relation() {
String sql = "select b.*, u.user_name from blog b inner join user u on b.user_id=u.id where b.id=?";
Blog blog = Blog.dao.findFirst(sql, 123); String name = blog.getStr("user_name");
}
String sql = "select b.*, u.user_name from blog b inner join user u on b.user_id=u.id where b.id=?";
Blog blog = Blog.dao.findFirst(sql, 123); String name = blog.getStr("user_name");
}
以下代碼演示第二種方式在 Blog 中獲取相關聯的 User 以及在 User 中獲取相關聯的Blog:
public class Blog extends Model<Blog>{
public static final Blog dao = new Blog();
public User getUser() {
return User.dao.findById(get("user_id"));
}
}
public class User extends Model<User>{
public static final User dao = new User();
public List<Blog> getBlogs() {
return Blog.dao.find("select * from blog where user_id=?", get("id"));
}
}
public static final Blog dao = new Blog();
public User getUser() {
return User.dao.findById(get("user_id"));
}
}
public class User extends Model<User>{
public static final User dao = new User();
public List<Blog> getBlogs() {
return Blog.dao.find("select * from blog where user_id=?", get("id"));
}
}