package org.nutz.dao.sql; import org.nutz.dao.entity.Entity; import org.nutz.dao.jdbc.ValueAdaptor; /** * Pojo 语句的组成元素,比如字段,条件,等 * * @author zozoh(zozohtnt@gmail.com) */ public interface PItem { /** * 设置所属的 POJO 对象 * * @param pojo * 所属的 POJO 对象 */ void setPojo(Pojo pojo); /** * @return 获得所属的 POJO 语句 */ Pojo getPojo(); /** * 将当前的语句组成元素输出,以便组成 PreparedStatement 语句 * * @param en * 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体 * @param sb * 文本缓冲 */ void joinSql(Entity<?> en, StringBuilder sb); /** * 根据自身的元素内容,为适配器数组填充适配器 * * @param en * 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体 * @param adaptors * 待填充的适配器数组 * @param off * 开始下标 * @return 结束后,下一项开始的下标 */ int joinAdaptor(Entity<?> en, ValueAdaptor[] adaptors, int off); /** * 根据自身的元素内容,为参数数组填充参数 * * @param en * 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体 * @param obj * 当前操作对象 * @param params * 待填充的参数数组 * @param off * 开始下标 * @return 结束后,下一项开始的下标 */ int joinParams(Entity<?> en, Object obj, Object[] params, int off); /** * @param en * 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体 * * @return 本语句元素所包含的参数数目 */ int paramCount(Entity<?> en); /** * @return 当前语句组成元素的日志打印字符串 */ String toString(); }