code: public static <T> String getInsertWhereNotExistSQL(T t, List<Object> values,
  			boolean isWithNullValue, String whereSql) {
  		StringBuilder sql = new StringBuilder("INSERT INTO ");
  		
  		Table table = DOInfoReader.getTable(t.getClass());
  		List<Field> fields = DOInfoReader.getColumns(t.getClass());
  		
  		sql.append(getTableName(table)).append(" (");
  		sql.append(joinAndGetValue(fields, ",", values, t, isWithNullValue));
  		sql.append(") select ");
  		sql.append(join("?", values.size(), ","));
  		sql.append(" from dual where not exists (select 1 from ");
  		
  		if(!whereSql.trim().toUpperCase().startsWith("WHERE ")) {
  			whereSql = "where " + whereSql;
  		}
  		whereSql = autoSetSoftDeleted(whereSql, t.getClass());
  		
  		sql.append(getTableName(table)).append(" ").append(whereSql).append(" limit 1)");
  		
  		return sql.toString();
  	}
docs: 生成insert into (...) select ?,?,? from where not exists (select 1 from where)语句
  @param t
  @param values
  @param whereSql
  @return