数据模型结构
1、Model(Jfinal) - BaseModel - BaseClassName - ClassName
1.1、Model 虚拟类,Jfinal 提供的虚拟的需要继承自 Model 类的泛型类。
public abstract class Model<M extends Model> implements Serializable
dao() 方法返回继承此类的 M 类实例,填充了 attrs 属性的实例类。
基于模型,提供了对当前模型属性操作的 put() 和 get() 和 remove() 方法对属性填充获取和删除操作。提供了 toJson() 方法属性 json 化。
基于模型,提供了 save() update() delete() 方法对当前模型实例增删改操作。
基于 sql,提供了 find() paginate() 查询和分页查询系列方法。
1.2、BaseModel 虚拟类,增强 Model 批量操作的虚拟类。泛型向下传递。
public abstract class BaseModel<M extends Model<M>> extends Model<M>
重写了 _getConfig() 配置方法。
增加了 batch() 系列的批量删除和批量更新方法。
1.3、BaseClassName 虚拟类,继承了BaseModel 的虚拟类,泛型向下传递。
public abstract class BaseStuClassRecord<M extends BaseStuClassRecord<M>> extends BaseModel<M> implements IBean
添加了数据字段的 set() get() 系列方法,使数据库字段对象化。
2、PageKit 分页处理工具,对分页查询的 sql 和查询条件解析处理。
2.1、paginate() - doPaginate() (Jfinal) - doPaginateByFullSql() (Jfinal) 分页方法调用过程。
2.2、paginate() - sql() - getPageNumber() - getPageSize() 调用分页方法前的 sql 解析。
2.3、sql() - select() - from() - where() - group() - order() 在sql() 方法中对 sql 语句的每一部分进行解析。
首先通过前缀判断出为那段解析,通过 put() 方法填充不同的集合中,通过对应的方法解析。
在 where() 方法中对每个键值对 key 值的前缀后缀循环解析,在具体解析根据前缀的不同解析出等于、不等、大于、大于等不同的判断条件。
网友评论