Example usage for org.apache.ibatis.scripting.xmltags TrimSqlNode TrimSqlNode

List of usage examples for org.apache.ibatis.scripting.xmltags TrimSqlNode TrimSqlNode

Introduction

In this page you can find the example usage for org.apache.ibatis.scripting.xmltags TrimSqlNode TrimSqlNode.

Prototype

protected TrimSqlNode(Configuration configuration, SqlNode contents, String prefix,
            List<String> prefixesToOverride, String suffix, List<String> suffixesToOverride) 

Source Link

Usage

From source file:cn.org.awcp.core.mybatis.mapper.MapperTemplate.java

License:Open Source License

/**
 * create criteria from baseExample// w ww  .j a  v a2  s .co m
 * 
 * @param sqlNodes
 * @param baseExample
 */
protected SqlNode createCriteria(MappedStatement ms) {

    List<SqlNode> ifSqlNodes = new ArrayList<SqlNode>();

    SqlNode noValueSqlNode = new TextSqlNode(" ${criterion.condition} ");
    ifSqlNodes.add(new IfSqlNode(noValueSqlNode, "criterion.noValue"));

    SqlNode singleValueSqlNode = new TextSqlNode(" ${criterion.condition} #{criterion.value} ");
    ifSqlNodes.add(new IfSqlNode(singleValueSqlNode, "criterion.singleValue"));

    SqlNode betweenValueSqlNode = new TextSqlNode(
            " ${criterion.condition} #{criterion.value} and #{criterion.secondValue} ");
    ifSqlNodes.add(new IfSqlNode(betweenValueSqlNode, "criterion.betweenValue"));

    List<SqlNode> listSqlNode = new ArrayList<SqlNode>();
    listSqlNode.add(new TextSqlNode(" ${criterion.condition} "));
    SqlNode listItemNode = new TextSqlNode(" #{listItem} ");
    SqlNode foreachSqlNode3 = new ForEachSqlNode(ms.getConfiguration(), listItemNode, "criterion.value", null,
            "listItem", " (", ") ", ",");
    listSqlNode.add(foreachSqlNode3);
    ifSqlNodes.add(new IfSqlNode(new MixedSqlNode(listSqlNode), "criterion.listValue"));

    SqlNode chooseSqlNode = new ChooseSqlNode(ifSqlNodes, null);
    SqlNode foreachSqlNode2 = new ForEachSqlNode(ms.getConfiguration(), chooseSqlNode, "criteria.criteria",
            null, "criterion", null, null, "AND");
    SqlNode trimSqlNode = new TrimSqlNode(ms.getConfiguration(), foreachSqlNode2, " (", "AND", ") ",
            (String) null);
    SqlNode iftestSqlNode = new IfSqlNode(trimSqlNode, "criteria.valid");
    SqlNode foreachSqlNode1 = new ForEachSqlNode(ms.getConfiguration(), iftestSqlNode, "oredCriteria", null,
            "criteria", null, null, "OR");

    return foreachSqlNode1;
}

From source file:com.github.abel533.mapper.MapperProvider.java

License:Open Source License

/**
 * ?/*w  ww .ja  v a  2  s . c  o m*/
 *
 * @param ms
 * @return
 */
public SqlNode insert(MappedStatement ms) {
    Class<?> entityClass = getSelectReturnType(ms);
    List<SqlNode> sqlNodes = new ArrayList<SqlNode>();
    //insert into table
    sqlNodes.add(new StaticTextSqlNode("INSERT INTO " + tableName(entityClass)));
    //?
    List<EntityHelper.EntityColumn> columnList = EntityHelper.getColumns(entityClass);
    //Identity?
    Boolean hasIdentityKey = false;
    //?
    for (EntityHelper.EntityColumn column : columnList) {
        //?sql????
        if (column.getSequenceName() != null && column.getSequenceName().length() > 0) {
        } else if (column.isIdentity()) {
            //Identity??selectKey
            //?Identity
            if (hasIdentityKey) {
                throw new RuntimeException(ms.getId() + "" + entityClass.getCanonicalName()
                        + "?MySql,?!");
            }
            //?selectKey
            newSelectKeyMappedStatement(ms, column);
            hasIdentityKey = true;
            //?,,??,?
            //bind
            sqlNodes.add(new VarDeclSqlNode(column.getProperty() + "_cache", column.getProperty()));
        } else if (column.isUuid()) {
            //uuid?bind
            sqlNodes.add(new VarDeclSqlNode(column.getProperty() + "_bind", getUUID()));
        }
    }
    //?(??,??...)
    sqlNodes.add(new StaticTextSqlNode("(" + EntityHelper.getAllColumns(entityClass) + ")"));
    List<SqlNode> ifNodes = new ArrayList<SqlNode>();
    //?values(,...)
    for (EntityHelper.EntityColumn column : columnList) {
        //,property!=null
        //,,property_cache,??
        if (column.isIdentity()) {
            ifNodes.add(getIfCacheNotNull(column,
                    new StaticTextSqlNode("#{" + column.getProperty() + "_cache },")));
        } else {
            //?property
            ifNodes.add(getIfNotNull(column, new StaticTextSqlNode("#{" + column.getProperty() + "},")));
        }
        //null??null
        //?
        if (column.getSequenceName() != null && column.getSequenceName().length() > 0) {
            ifNodes.add(getIfIsNull(column, new StaticTextSqlNode(getSeqNextVal(column) + " ,")));
        } else if (column.isIdentity()) {
            ifNodes.add(getIfCacheIsNull(column, new StaticTextSqlNode("#{" + column.getProperty() + " },")));
        } else if (column.isUuid()) {
            ifNodes.add(getIfIsNull(column, new StaticTextSqlNode("#{" + column.getProperty() + "_bind },")));
        } else {
            //null?jdbcTypeoracle?VARCHAR??
            ifNodes.add(getIfIsNull(column,
                    new StaticTextSqlNode("#{" + column.getProperty() + ",jdbcType=VARCHAR},")));
        }
    }
    //values(#{property},#{property}...)
    sqlNodes.add(new TrimSqlNode(ms.getConfiguration(), new MixedSqlNode(ifNodes), "VALUES (", null, ")", ","));
    return new MixedSqlNode(sqlNodes);
}

From source file:com.github.abel533.mapper.MapperProvider.java

License:Open Source License

/**
 * ??null//from w w  w .  ja  va2s  .  c o m
 *
 * @param ms
 * @return
 */
public SqlNode insertSelective(MappedStatement ms) {
    Class<?> entityClass = getSelectReturnType(ms);
    List<SqlNode> sqlNodes = new ArrayList<SqlNode>();
    //insert into table
    sqlNodes.add(new StaticTextSqlNode("INSERT INTO " + tableName(entityClass)));
    //?
    List<EntityHelper.EntityColumn> columnList = EntityHelper.getColumns(entityClass);
    List<SqlNode> ifNodes = new ArrayList<SqlNode>();
    //Identity?
    Boolean hasIdentityKey = false;
    //??????
    for (EntityHelper.EntityColumn column : columnList) {
        //?
        if (column.getSequenceName() != null && column.getSequenceName().length() > 0) {
            //
            ifNodes.add(new StaticTextSqlNode(column.getColumn() + ","));
        } else if (column.isIdentity()) {
            if (hasIdentityKey) {
                throw new RuntimeException(ms.getId() + "" + entityClass.getCanonicalName()
                        + "?MySql,?!");
            }
            //selectKey-MS
            newSelectKeyMappedStatement(ms, column);
            hasIdentityKey = true;
            //
            ifNodes.add(new StaticTextSqlNode(column.getColumn() + ","));
            //?,,??,?
            sqlNodes.add(new VarDeclSqlNode(column.getProperty() + "_cache", column.getProperty()));
        } else if (column.isUuid()) {
            //UUIDbind
            sqlNodes.add(new VarDeclSqlNode(column.getProperty() + "_bind", getUUID()));
            ifNodes.add(new StaticTextSqlNode(column.getColumn() + ","));
        } else {
            ifNodes.add(getIfNotNull(column, new StaticTextSqlNode(column.getColumn() + ",")));
        }
    }
    //?sqlNodes
    sqlNodes.add(new TrimSqlNode(ms.getConfiguration(), new MixedSqlNode(ifNodes), "(", null, ")", ","));

    ifNodes = new ArrayList<SqlNode>();
    //?values(#{property},#{property}...)
    for (EntityHelper.EntityColumn column : columnList) {
        //??,
        //,,property_cache
        if (column.isIdentity()) {
            ifNodes.add(new IfSqlNode(new StaticTextSqlNode("#{" + column.getProperty() + "_cache },"),
                    column.getProperty() + "_cache != null "));
        } else {
            ifNodes.add(new IfSqlNode(new StaticTextSqlNode("#{" + column.getProperty() + "},"),
                    column.getProperty() + " != null "));
        }
        if (column.getSequenceName() != null && column.getSequenceName().length() > 0) {
            ifNodes.add(getIfIsNull(column, new StaticTextSqlNode(getSeqNextVal(column) + " ,")));
        } else if (column.isIdentity()) {
            ifNodes.add(getIfCacheIsNull(column, new StaticTextSqlNode("#{" + column.getProperty() + " },")));
        } else if (column.isUuid()) {
            ifNodes.add(getIfIsNull(column, new StaticTextSqlNode("#{" + column.getProperty() + "_bind },")));
        }
    }
    //values(#{property},#{property}...)
    sqlNodes.add(new TrimSqlNode(ms.getConfiguration(), new MixedSqlNode(ifNodes), "VALUES (", null, ")", ","));
    return new MixedSqlNode(sqlNodes);
}

From source file:com.github.abel533.mapperhelper.MapperTemplate.java

License:Open Source License

public IfSqlNode ExampleValidSqlNode(Configuration configuration) {
    List<SqlNode> whenSqlNodes = new ArrayList<SqlNode>();
    IfSqlNode noValueSqlNode = new IfSqlNode(new TextSqlNode("and ${criterion.condition}"),
            "criterion.noValue");
    whenSqlNodes.add(noValueSqlNode);//from ww w  .  j av  a2 s  .c  o  m
    IfSqlNode singleValueSqlNode = new IfSqlNode(
            new TextSqlNode("and ${criterion.condition} #{criterion.value}"), "criterion.singleValue");
    whenSqlNodes.add(singleValueSqlNode);
    IfSqlNode betweenValueSqlNode = new IfSqlNode(
            new TextSqlNode("and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}"),
            "criterion.betweenValue");
    whenSqlNodes.add(betweenValueSqlNode);

    List<SqlNode> listValueContentSqlNodes = new ArrayList<SqlNode>();
    listValueContentSqlNodes.add(new TextSqlNode("and ${criterion.condition}"));
    ForEachSqlNode listValueForEachSqlNode = new ForEachSqlNode(configuration,
            new StaticTextSqlNode("#{listItem}"), "criterion.value", null, "listItem", "(", ")", ",");
    listValueContentSqlNodes.add(listValueForEachSqlNode);
    IfSqlNode listValueSqlNode = new IfSqlNode(new MixedSqlNode(listValueContentSqlNodes),
            "criterion.listValue");
    whenSqlNodes.add(listValueSqlNode);

    ChooseSqlNode chooseSqlNode = new ChooseSqlNode(whenSqlNodes, null);

    ForEachSqlNode criteriaSqlNode = new ForEachSqlNode(configuration, chooseSqlNode, "criteria.criteria", null,
            "criterion", null, null, null);

    TrimSqlNode trimSqlNode = new TrimSqlNode(configuration, criteriaSqlNode, "(", "and", ")", null);
    IfSqlNode validSqlNode = new IfSqlNode(trimSqlNode, "criteria.valid");
    return validSqlNode;
}

From source file:com.hand.hap.mybatis.mapperhelper.MapperTemplate.java

License:Open Source License

@Deprecated
public IfSqlNode ExampleValidSqlNode(Configuration configuration) {
    List<SqlNode> whenSqlNodes = new ArrayList<SqlNode>();
    IfSqlNode noValueSqlNode = new IfSqlNode(new TextSqlNode(" and ${criterion.condition}"),
            "criterion.noValue");
    whenSqlNodes.add(noValueSqlNode);/*from   w  w  w  . ja  v a 2  s. c o m*/
    IfSqlNode singleValueSqlNode = new IfSqlNode(
            new TextSqlNode(" and ${criterion.condition} #{criterion.value}"), "criterion.singleValue");
    whenSqlNodes.add(singleValueSqlNode);
    IfSqlNode betweenValueSqlNode = new IfSqlNode(
            new TextSqlNode(" and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}"),
            "criterion.betweenValue");
    whenSqlNodes.add(betweenValueSqlNode);

    List<SqlNode> listValueContentSqlNodes = new ArrayList<SqlNode>();
    listValueContentSqlNodes.add(new TextSqlNode(" and ${criterion.condition}"));
    ForEachSqlNode listValueForEachSqlNode = new ForEachSqlNode(configuration,
            new StaticTextSqlNode("#{listItem}"), "criterion.value", null, "listItem", "(", ")", ",");
    listValueContentSqlNodes.add(listValueForEachSqlNode);
    IfSqlNode listValueSqlNode = new IfSqlNode(new MixedSqlNode(listValueContentSqlNodes),
            "criterion.listValue");
    whenSqlNodes.add(listValueSqlNode);

    ChooseSqlNode chooseSqlNode = new ChooseSqlNode(whenSqlNodes, null);

    ForEachSqlNode criteriaSqlNode = new ForEachSqlNode(configuration, chooseSqlNode, "criteria.criteria", null,
            "criterion", null, null, null);

    TrimSqlNode trimSqlNode = new TrimSqlNode(configuration, criteriaSqlNode, "(", "and", ")", null);
    IfSqlNode validSqlNode = new IfSqlNode(trimSqlNode, "criteria.valid");
    return validSqlNode;
}

From source file:com.sxj.mybatis.orm.builder.GenericStatementBuilder.java

License:Open Source License

private SqlNode getBatchInsertFields(String collection) {
    List<SqlNode> contents = new ArrayList<SqlNode>();
    for (Field field : columnFields) {
        List<SqlNode> sqlNodes = new ArrayList<SqlNode>();
        Column column = field.getAnnotation(Column.class);
        if (Date.class.isAssignableFrom(field.getType()) && column != null && column.sysdate() == true) {
            sqlNodes.add(new TextSqlNode("now(),"));
        } else {/*  ww  w.ja  v  a2  s. c o m*/
            sqlNodes.add(new TextSqlNode("#{item." + field.getName() + "},"));
        }

        contents.add(new MixedSqlNode(sqlNodes));
    }
    TrimSqlNode fieldSqlNode = new TrimSqlNode(configuration, new MixedSqlNode(contents), " (", null, ")", ",");

    ForEachSqlNode forEachSqlNode = new ForEachSqlNode(configuration, fieldSqlNode, collection, "index", ITEM,
            "", "", ",");

    return new TrimSqlNode(configuration, forEachSqlNode, " VALUES ", null, "", ",");
}

From source file:com.sxj.mybatis.orm.builder.GenericStatementBuilder.java

License:Open Source License

private SqlNode getInsertFileds() {
    List<SqlNode> contents = new ArrayList<SqlNode>();
    for (Field field : columnFields) {
        List<SqlNode> sqlNodes = new ArrayList<SqlNode>();
        Column column = field.getAnnotation(Column.class);
        if (Date.class.isAssignableFrom(field.getType()) && column != null && column.sysdate() == true) {
            sqlNodes.add(new TextSqlNode("now(),"));
        } else {//from   w  w w.j a  va  2 s  .c  o m
            sqlNodes.add(new TextSqlNode("#{" + field.getName() + "},"));
        }

        contents.add(new IfSqlNode(new MixedSqlNode(sqlNodes), getTestByField(null, field)));
    }

    return new TrimSqlNode(configuration, new MixedSqlNode(contents), " VALUES (", null, ")", ",");
}

From source file:com.sxj.mybatis.orm.builder.GenericStatementBuilder.java

License:Open Source License

private TrimSqlNode getBatchInsertColumns() {
    List<SqlNode> contents = new ArrayList<SqlNode>();
    for (Field field : columnFields) {
        List<SqlNode> sqlNodes = new ArrayList<SqlNode>();
        sqlNodes.add(new TextSqlNode(getColumnNameByField(field) + ","));

        contents.add(new MixedSqlNode(sqlNodes));
    }/* www.j a  v a 2s .  com*/

    return new TrimSqlNode(configuration, new MixedSqlNode(contents), "(", null, ")", ",");
}

From source file:com.sxj.mybatis.orm.builder.GenericStatementBuilder.java

License:Open Source License

private TrimSqlNode getInsertColumns() {
    List<SqlNode> contents = new ArrayList<SqlNode>();
    for (Field field : columnFields) {
        List<SqlNode> sqlNodes = new ArrayList<SqlNode>();
        sqlNodes.add(new TextSqlNode(getColumnNameByField(field) + ","));

        contents.add(new IfSqlNode(new MixedSqlNode(sqlNodes), getTestByField(null, field)));
    }//from   w w  w  . j ava 2  s  .  co m

    return new TrimSqlNode(configuration, new MixedSqlNode(contents), "(", null, ")", ",");
}

From source file:message.mybatis.common.provider.MapperProvider.java

License:Open Source License

/**
 * ?null???//from www  . j av a2s  .c o m
 *
 * @param ms
 * @return
 */
public SqlNode inert(MappedStatement ms) {
    Class<?> entityClass = getSelectReturnType(ms);
    List<SqlNode> sqlNodes = new LinkedList<SqlNode>();
    //insert into table
    sqlNodes.add(new StaticTextSqlNode("INSERT INTO " + tableName(entityClass)));
    //?
    Set<EntityHelper.EntityColumn> columnList = EntityHelper.getColumns(entityClass);
    List<SqlNode> ifNodes = new LinkedList<SqlNode>();
    //Identity?
    Boolean hasIdentityKey = false;
    //??????
    for (EntityHelper.EntityColumn column : columnList) {
        //?
        if (column.getSequenceName() != null && column.getSequenceName().length() > 0) {
            //
            ifNodes.add(new StaticTextSqlNode(column.getColumn() + ","));
        } else if (column.isIdentity()) {
            //?,,??,?
            sqlNodes.add(new VarDeclSqlNode(column.getProperty() + "_cache", column.getProperty()));
            if (hasIdentityKey) {
                //jdbc??
                if (column.getGenerator() != null && column.getGenerator().equals("JDBC")) {
                    continue;
                }
                throw new RuntimeException(ms.getId() + "" + entityClass.getCanonicalName()
                        + "?MySql,?!");
            }
            //selectKey-MS
            newSelectKeyMappedStatement(ms, column);
            hasIdentityKey = true;
            //
            ifNodes.add(new StaticTextSqlNode(column.getColumn() + ","));
        } else if (column.isUuid()) {
            //UUIDbind
            sqlNodes.add(new VarDeclSqlNode(column.getProperty() + "_bind", getUUID()));
            ifNodes.add(new StaticTextSqlNode(column.getColumn() + ","));
        } else {
            ifNodes.add(getIfNotNull(column, new StaticTextSqlNode(column.getColumn() + ",")));
        }
    }
    //?sqlNodes
    sqlNodes.add(new TrimSqlNode(ms.getConfiguration(), new MixedSqlNode(ifNodes), "(", null, ")", ","));

    ifNodes = new LinkedList<SqlNode>();
    //?values(#{property},#{property}...)
    for (EntityHelper.EntityColumn column : columnList) {
        //??,
        //,,property_cache
        if (column.isIdentity()) {
            ifNodes.add(new IfSqlNode(new StaticTextSqlNode("#{" + column.getProperty() + "_cache },"),
                    column.getProperty() + "_cache != null "));
        } else {
            ifNodes.add(new IfSqlNode(new StaticTextSqlNode("#{" + column.getProperty() + "},"),
                    column.getProperty() + " != null "));
        }
        if (column.getSequenceName() != null && column.getSequenceName().length() > 0) {
            ifNodes.add(getIfIsNull(column, new StaticTextSqlNode(getSeqNextVal(column) + " ,")));
        } else if (column.isIdentity()) {
            ifNodes.add(getIfCacheIsNull(column, new StaticTextSqlNode("#{" + column.getProperty() + " },")));
        } else if (column.isUuid()) {
            ifNodes.add(getIfIsNull(column, new StaticTextSqlNode("#{" + column.getProperty() + "_bind },")));
        }
    }
    //values(#{property},#{property}...)
    sqlNodes.add(new TrimSqlNode(ms.getConfiguration(), new MixedSqlNode(ifNodes), "VALUES (", null, ")", ","));
    return new MixedSqlNode(sqlNodes);
}