增删改:
public void ALLCUD(String sql,Object...args){
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = JdbcUtil.getConn();
preparedStatement=connection.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
preparedStatement.setObject(i+1,args[i]);
}
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtil.close(null,preparedStatement,connection);
}
}
查询(单个返回值):
public <T> T getInstance(Class<T> clazz,String sql,Object...args) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = JdbcUtil.getConn();
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
preparedStatement.setObject(i+1, args[i]);
}
resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
if (resultSet.next()) {
T t = clazz.newInstance();
for (int i = 0; i < columnCount; i++) {
//获取列值
Object columValue = resultSet.getObject(i+1);
//获取每个列的列名
String columnLabel = resultSetMetaData.getColumnLabel(i+1);
//给t对象指定columName属性,赋值为columValue:通过反射
Field field = clazz.getDeclaredField(getDbName(columnLabel));
field.setAccessible(true);
field.set(t, columValue);
}
return t;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
JdbcUtil.close(resultSet, preparedStatement, connection);
}
return null;
}
查询(多个返回值):
//返回多个值
public <T> List<T> getForList(Class<T> clazz, String sql, Object...args){
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = JdbcUtil.getConn();
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
preparedStatement.setObject(i+1,args[i]);
}
resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int Count = resultSetMetaData.getColumnCount();
//集合
List<T> list = new ArrayList<>();
while (resultSet.next()){
T t = clazz.newInstance();
for (int i = 0; i < Count; i++) {
//获取列值
Object Value = resultSet.getObject(i+1);
//获取每个列的列名
String Label = resultSetMetaData.getColumnLabel(i+1);
//给t对象指定columName属性,赋值为columValue:通过反射
Field field = clazz.getDeclaredField(getDbName(Label));
field.setAccessible(true);
field.set(t,Value);
}
list.add(t);
}
return list;
} catch (Exception e) {
e.printStackTrace();
}finally {
JdbcUtil.close(resultSet, preparedStatement, connection);
}
return null;
}
工具类:
//工具类:属性名转化。把数据库里有斜划线的列名转化成骆驼命名法的格式。
private String getDbName(String columnName){
char[] chars = columnName.toCharArray();
StringBuffer s = new StringBuffer();
for (int i = 0 ; i < chars.length ; i++){
if(chars[i] == '_'){
s.append(String.valueOf(chars[i+1]).toUpperCase());
i++;
}else {
s.append(String.valueOf(chars[i]));
}
}
return s.toString();
}