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

tk.mybatis.mapper.additional.dialact.oracle.OracleProvider Maven / Gradle / Ivy

package tk.mybatis.mapper.additional.dialact.oracle;

import org.apache.ibatis.mapping.MappedStatement;
import tk.mybatis.mapper.entity.EntityColumn;
import tk.mybatis.mapper.mapperhelper.EntityHelper;
import tk.mybatis.mapper.mapperhelper.MapperHelper;
import tk.mybatis.mapper.mapperhelper.MapperTemplate;
import tk.mybatis.mapper.mapperhelper.SqlHelper;

import java.util.Set;

/**
 * @description: Oracle实现类
 * @author: qrqhuangcy
 * @date: 2018-11-15
 **/
public class OracleProvider extends MapperTemplate {

    public OracleProvider(Class mapperClass, MapperHelper mapperHelper) {
        super(mapperClass, mapperHelper);
    }

    /**
     * 
     * INSERT ALL
     * 
     *     INTO demo_country
     *     country_id,country_name,country_code,
     *     VALUES
     *     
     *         
     *         #{record.countryId},#{record.countryName},#{record.countryCode},
     *     
     * 
     * SELECT 1 FROM DUAL
     * 
     * @param ms
     * @return
     */
    public String insertList(MappedStatement ms){
        final Class entityClass = getEntityClass(ms);
        //开始拼sql
        StringBuilder sql = new StringBuilder();
        sql.append("\n");

        sql.append("INSERT ALL\n");
        sql.append("\n");

        String tableName = SqlHelper.getDynamicTableName(entityClass, tableName(entityClass));
        String columns = SqlHelper.insertColumns(entityClass, false, false, false);
        sql.append(" INTO ").append(tableName).append(" ").append(columns).append("\n");
        sql.append(" VALUES ");

        sql.append("");

        Set columnList = EntityHelper.getColumns(entityClass);
        //单独增加对 genId 方式的支持
        for (EntityColumn column : columnList) {
            if(column.getGenIdClass() != null){
                sql.append("");
            }
        }
        //当某个列有主键策略时,不需要考虑他的属性是否为空,因为如果为空,一定会根据主键策略给他生成一个值
        for (EntityColumn column : columnList) {
            if (column.isInsertable()) {
                sql.append(column.getColumnHolder("record") + ",");
            }
        }
        sql.append("\n");

        sql.append("\n");
        sql.append("SELECT 1 FROM DUAL");

        //System.out.println("sql mapper: \n" + sql.toString());
        return sql.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy