1 获取某个表的所有字段名
/**
* 获取某个表的所有字段名
*
* @return
* @throws SQLException
*/
public List<String> getAllColumnNames(String tableName) {
List<String> list = new ArrayList<String>();
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
Session session = sessionFactory.openSession();
if (session != null) {
list = session.doReturningWork(
connection -> {
List<String> resultList = new ArrayList<>();
ResultSet rs;
try {
rs = connection.getMetaData().getColumns(connection.getCatalog(), null, tableName, null);
while (rs.next()) {
String column= rs.getObject(4).toString();
resultList.add(column);
}
} catch (SQLException e) {
//不存在
return resultList;
}
rs.close();
return resultList;
}
);
session.close();
}
return list;
}
2 判断某个表中某个字段是否存在
/**
* 判断某个表中某个字段是否存在
*
* @return
*/
public boolean checkColumnNameExist(String tableName,String columnName) {
List<String> columnNameList=getAllColumnNames();
if(columnNameList==null||columnNameList.size()<=0){
return false;
}
return columnNameList.contains(columnName)?true:false;
}
3 返回表中存在的字段名
/**
* 返回表中存在的字段名
*
* @return
*/
public List<String> getExistColumnNameList(List<String> columnNameList) {
List<String> allColumnNameList=getAllColumnNames();
if(allColumnNameList==null||allColumnNameList.size()<=0){
return new ArrayList<>();
}
return allColumnNameList.stream().filter(x->columnNameList.contains(x)).collect(Collectors.toList());
}