for(Object f : fields){
boolean index = (Boolean) GenUtils.getFieldValue(clazz, f, INDEX);
if(index) result.add(f.toString());
}
return result;
}
/**
* 在表上创建索引
* @param conn
* @param tableName
* @param clazz
* @param columns
* @throws SQLException
*/
public void checkCreateIndex(Connection conn, String tableName, Class< > clazz) throws Exception {
// 反射获取配置中待创建索引的列
List
// 表中加索引的列信息
List
DatabaseMetaData dbMeta = conn.getMetaData();
String schema = null;
// 获取表中索引信息
ResultSet indexs = dbMeta.getIndexInfo(null, schema, tableName, false, true);
while(indexs.next()) {
indexTables.add(indexs.getString("COLUMN_NAME"));
}
indexs.close();
// 若数据表索引包含配置类中全部索引,则不用建索引,直接返回
if(indexTables.containsAll(indexConfs)) {
return ;
}
// 找出配置中有,数据表中没有的索引
List
for(String i : indexConfs) {
if(!indexTables.contains(i)) {
indexDifs.add(i);
}
}
// 创建索引
Statement st = conn.createStatement();
for(String column : indexDifs) {
String indexSql = "CREATE INDEX " + tableName + "_" + column + " ON " + tableName +"(" + column + ")";
System.out.println("建索引: " + indexSql);
st.executeUpdate(indexSql);
}
st.close();
}
/**
* 建表操作
* @param conn
* @param tableName
* @param clazz
* @throws Exception
*/
public void createTable(Connection conn, String tableName, Class< > clazz) throws Exception {
// 拼成SQL语句
StringBuilder sql = new StringBuilder();
sql.append("CREATE TABLE `").append(tableName).append("`"); // 建表
sql.append("(");
// 获取并遍历配置表字段
List