
tk.mybatis.mapper.additional.dialect.oracle.OracleProvider Maven / Gradle / Ivy
package tk.mybatis.mapper.additional.dialect.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), "list[0]");
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