模擬mybatis-plus wrapper

模擬mybatis-plus wrapper

package com.giant.financial.utils;


import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Title:
 * Description: sql Wrapper
 * Company: gainet <br>
 * @author LiMingJun <br>
 * @version v1.0 <br>
 * @date 2019/1/8 09:19<br>
 */
public class GainetSqlWrapper {

    protected String db = null;

    private final String SYMBOL_EQ = "=";
    private final String SYMBOL_GT = ">";
    private final String SYMBOL_GE = ">=";
    private final String SYMBOL_LT = "<";
    private final String SYMBOL_LE = "<=";
    private final String SYMBOL_NOTNULL = "is not null";
    private final String SYMBOL_LIKE = "like";
    private StringBuffer sqlSelect = null;

    private SimpleDateFormat sfmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public GainetSqlWrapper() {
        this.sqlSelect = new StringBuffer();
    }

    public GainetSqlWrapper(String bdName) {
        this.db = bdName;
        if(null == sqlSelect) sqlSelect = new StringBuffer("select * from "+ db +" where 1=1 ");
    }

    public String sql(){
        return sqlSelect.toString();
    }

    /**
     * 等於
     * @param column
     * @param params
     * @return
     */
    public GainetSqlWrapper eq(String column, Object params) {
        return this.where(column, params, this.SYMBOL_EQ);
    }

    /**
     * 字段相同匹配
     * @param column1
     * @param column2
     * @return
     */
    public GainetSqlWrapper ceq(String column1, Object column2) {
        sqlSelect.append("and "+ column1 +" = "+  column2 +" ");
        return this;
    }

    /**
     * 大於
     * @param column
     * @param params
     * @return
     */
    public GainetSqlWrapper gt(String column, Object params) {
        return this.where(column, params, this.SYMBOL_GT);
    }

    /**
     * 大於等於
     * @param column
     * @param params
     * @return
     */
    public GainetSqlWrapper ge(String column, Object params) {
        return this.where(column, params, this.SYMBOL_GE);
    }

    /**
     * 小於
     * @param column
     * @param params
     * @return
     */
    public GainetSqlWrapper lt(String column, Object params) {
        return this.where(column, params, this.SYMBOL_LT);
    }

    /**
     * 小於等於
     * @param column
     * @param params
     * @return
     */
    public GainetSqlWrapper le(String column, Object params) {
        return this.where(column, params, this.SYMBOL_LE);
    }

    /**
     * 小於等於
     * @param column
     * @param params
     * @return
     */
    public GainetSqlWrapper notNull(String column, Object params) {
        return this.where(column, params, this.SYMBOL_NOTNULL);
    }

    /**
     * like
     * @param column
     * @param params
     * @return
     */
    public GainetSqlWrapper like(String column, Object params) {
        return this.where(column, params, this.SYMBOL_LIKE);
    }

    /**
     * group
     * @param column
     * @return
     */
    public GainetSqlWrapper groupBy(String column) {
        sqlSelect.append("group by "+ column +" ");
        return this;
    }

    /**
     * order by asc
     * @param column
     * @return
     */
    public GainetSqlWrapper orderByAsc(String column) {
        sqlSelect.append("order by "+ column +" ASC ");
        return this;
    }

    /**
     * order by desc
     * @param column
     * @return
     */
    public GainetSqlWrapper orderByDesc(String column) {
        sqlSelect.append("order by rand() ");
//        sqlSelect.append("order by "+ column +" DESC ");
        return this;
    }

    /**
     * order by desc
     * @param s e
     * @return
     */
    public GainetSqlWrapper limit(int s, int e) {
        sqlSelect.append("limit "+ s +", "+e);
        return this;
    }

    /**
     * 組裝sql
     * @param column
     * @param params
     * @param Symbol
     * @return
     */
    public GainetSqlWrapper where(String column, Object params,String Symbol){

        if(column.equals(params.toString())){
            sqlSelect.append("and "+ column +" "+ Symbol +" "+ params +" ");
        } else if(params.toString().equals("null")){
            sqlSelect.append("and "+ column +" "+ Symbol +" ");
        } else {
            if(params instanceof Integer){
                sqlSelect.append("and "+ column +" "+ Symbol +" "+ params +" ");
            }
            if(params instanceof String){
                sqlSelect.append("and "+ column +" "+ Symbol +" '"+ params +"' ");
            }
            if(params instanceof Date){
                sqlSelect.append("and "+ column +" "+ Symbol +" '"+ sfmt.format(params) +"' ");
            }
        }

        return this;
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章