All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.dreampie.common.model.Model Maven / Gradle / Ivy

There is a newer version: 1.2.2
Show newest version
package cn.dreampie.common.model;

import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Table;
import com.jfinal.plugin.activerecord.TableMapping;

import java.util.Date;
import java.util.List;

/**
 * Created by wangrenhui on 2014/7/1.
 */
public abstract class Model extends com.jfinal.plugin.activerecord.Model {

  private Table table;
  private String tableName;
  private String primaryKey;
  private String modelName;

  private String selectSql;
  private String exceptSelectSql;
  private String updateSql;
  private String deleteSql;
  private String dropSql;
  private String countSql;

  protected static String blank = " ";

  public List findAll() {
    return find(getSelectSql() + getExceptSelectSql());
  }

  public List findBy(String where, Object... paras) {
    return find(getSelectSql() + getExceptSelectSql() + getWhere(where), paras);
  }

  public List findTopBy(int topNumber, String where, Object... paras) {
    return paginate(1, topNumber, getSelectSql(), getExceptSelectSql() + getWhere(where), paras).getList();
  }

  public M findFirstBy(String where, Object... paras) {
    return findFirst(getSelectSql() + getExceptSelectSql() + getWhere(where), paras);
  }

  public Page paginateAll(int pageNumber, int pageSize) {
    return paginate(pageNumber, pageSize, getSelectSql(), getExceptSelectSql());
  }

  public Page paginateBy(int pageNumber, int pageSize, String where, Object... paras) {
    return paginate(pageNumber, pageSize, getSelectSql(), getExceptSelectSql() + getWhere(where), paras);
  }

  public boolean updateAll(String set, Object... paras) {
    return Db.update(getUpdateSql() + getSet(set), paras) > 0;
  }

  public boolean updateBy(String set, String where, Object... paras) {
    return Db.update(getUpdateSql() + getSet(set) + getWhere(where), paras) > 0;
  }

  public boolean deleteAll() {
    return Db.update(getDeleteSql()) > 0;
  }

  public boolean deleteBy(String where, Object... paras) {
    return Db.update(getDeleteSql() + getWhere(where), paras) > 0;
  }

  public boolean dropAll() {
    return Db.update(getDropSql()) > 0;
  }

  public boolean dropBy(String where, Object... paras) {
    return Db.update(getDropSql() + getWhere(where), paras) > 0;
  }

  public long countAll() {
    long result = Db.queryFirst(getCountSql());
    return result;
  }

  public long countBy(String where, Object... paras) {
    long result = Db.queryFirst(getCountSql() + getWhere(where), paras);
    return result;
  }

  protected String getSet(String set) {
    if (set != null && !set.isEmpty() && !set.trim().toUpperCase().startsWith("SET")) {
      set = " SET " + set;
    }
    return set;
  }

  protected String getWhere(String where) {
    if (where != null && !where.isEmpty() && !where.trim().toUpperCase().startsWith("WHERE")) {
      where = " WHERE " + where;
    }
    return where;
  }

  public Table getTable() {
    if (table == null) {
      Class clazz = getClass();
      table = TableMapping.me().getTable(clazz);
    }
    return table;
  }

  public String getPrimaryKey() {
    if (primaryKey == null) {
      primaryKey = getTable().getPrimaryKey();
    }
    return primaryKey;
  }

  public String getTableName() {
    if (tableName == null) {
      tableName = getTable().getName();
    }
    return tableName;
  }

  public String getModelName() {
    if (modelName == null) {
      Class clazz = getClass();
      byte[] items = clazz.getSimpleName().getBytes();
      items[0] = (byte) ((char) items[0] + ('a' - 'A'));
      modelName = new String(items);
    }
    return modelName;
  }

  public String getSelectSql() {
    if (selectSql == null) {
      selectSql = " SELECT `" + getModelName() + "`.* ";
    }
    return selectSql;
  }

  public String getExceptSelectSql() {
    if (exceptSelectSql == null) {
      exceptSelectSql = " FROM " + getTableName() + " `" + getModelName() + "` ";
    }
    return exceptSelectSql;
  }

  public String getUpdateSql() {
    if (updateSql == null) {
      updateSql = " UPDATE " + getTableName() + " `" + getModelName() + "` ";
    }
    return updateSql;
  }

  public String getDeleteSql() {
    if (deleteSql == null) {
      deleteSql = " UPDATE " + getTableName() + " `" + getModelName() + "` SET `" + getModelName() + "`.deleted_at='" + new Date() + "' ";
    }
    return deleteSql;
  }

  public String getDropSql() {
    if (dropSql == null) {
      dropSql = " DELETE FROM " + getTableName() + " ";
    }
    return dropSql;
  }

  public String getCountSql() {
    if (countSql == null) {
      countSql = " SELECT COUNT(*) count FROM " + getTableName() + " `" + getModelName() + "` ";
    }
    return countSql;
  }

  public String getNextSql(String where) {
    String nextSql = " WHERE `" + getModelName() + "`." + getPrimaryKey()
        + "=(SELECT MIN(`_" + getModelName() + "`." + getPrimaryKey() + ") FROM " + getTableName() + " `_" + getModelName() + "`" + getWhere(where) + ")";

    return nextSql;
  }

  public String getPreviousSql(String where) {
    String previousSql = " WHERE `" + getModelName() + "`." + getPrimaryKey()
        + "=(SELECT MAX(`_" + getModelName() + "`." + getPrimaryKey() + ") FROM " + getTableName() + " `_" + getModelName() + "`" + getWhere(where) + ")";
    return previousSql;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy