jdbc ResultSet 처리 도구 클래스 DbUtil
package cang.yan.utils;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* POJO
* @author chenyl
*/
public class DbUtil{
private static final char SEPARATOR = '_';
public static <T> T toBean(Class<T> clazz,ResultSet rs) throws Exception{
if(!rs.next()){
return null;
}
T t = clazz.newInstance();
ResultSetMetaData rsmd = rs.getMetaData();
int len = rsmd.getColumnCount();
Map<String,Method> mm = getSetMethod(clazz);
for(int i = 1; i <= len; i++){
String label = rsmd.getColumnLabel(i);
Method m = mm.get(lineToCamel(label, true));
if(m!=null){
m.invoke(t, rs.getObject(label));
}
}
return t;
}
public static Map<String, Object> toMap(ResultSet rs) throws Exception{
Map<String, Object> map = new HashMap<String, Object>();
if(!rs.next()){
return null;
}
ResultSetMetaData rsmd = rs.getMetaData();
int len = rsmd.getColumnCount();
for(int i = 1; i <= len; i++){
String label = rsmd.getColumnLabel(i);
map.put(lineToCamel(label,false), rs.getObject(label));
}
return map;
}
public static Map<String, Object> toStrMap(ResultSet rs) throws Exception{
Map<String, Object> map = new HashMap<String, Object>();
if(!rs.next()){
return null;
}
ResultSetMetaData rsmd = rs.getMetaData();
int len = rsmd.getColumnCount();
for(int i = 1; i <= len; i++){
String label = rsmd.getColumnLabel(i);
Object obj = rs.getObject(label);
if(obj instanceof java.sql.Timestamp){
java.sql.Timestamp ts = (java.sql.Timestamp)obj;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
map.put(lineToCamel(label,false), format.format(new Date(ts.getTime())));
}else if(obj instanceof java.util.Date){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
map.put(lineToCamel(label,false), format.format((Date)obj));
}else{
map.put(lineToCamel(label,false), rs.getString(label));
}
}
return map;
}
public static <T> List<T> toList(Class<T> clazz,ResultSet rs) throws Exception{
List<T> list = new ArrayList<T>();
while(true){
T t = toBean(clazz, rs);
if(t==null){
break;
}
list.add(t);
}
return list;
}
public static List toList(ResultSet rs) throws Exception {
List list = new ArrayList();
while(true){
Map m = toMap(rs);
if(m==null){
break;
}
list.add(m);
}
return list;
}
public static List toStrList(ResultSet rs) throws Exception{
List list = new ArrayList();
while(true){
Map m = toStrMap(rs);
if(m==null){
break;
}
list.add(m);
}
return list;
}
private static Map<String,Method> getSetMethod(Class<?> clazz){
Map<String,Method> map = new HashMap<String, Method>();
Method[] array = clazz.getMethods();
int len = array.length;
for(int i =0 ; i < len; i++){
Method m = array[i];
if(m.getName().startsWith("set")&& m.getParameterTypes().length==1){
map.put(m.getName().substring(3), m);
}
}
return map;
}
public static String lineToCamel(String str,boolean firstUpperCase){
if(str==null || str.length() == 0){
return str;
}
str = str.toLowerCase();
int len = str.length();
StringBuffer sb = new StringBuffer();
boolean upperCase = firstUpperCase;
for(int i = 0; i < len; i++){
char c = str.charAt(i);
if(c==SEPARATOR){
upperCase = true;
continue;
}
if(upperCase){
sb.append(Character.toUpperCase(str.charAt(i)));
upperCase = false;
}else{
sb.append(str.charAt(i));
}
}
return sb.toString();
}
public static String camelToLine(String str) throws Exception{
if(str==null || str.length() == 0){
return str;
}
StringBuilder sb = new StringBuilder();
boolean nextIsUpperCase = false;
int len = str.length();
for(int i = 0; i < len; i++){
char c = str.charAt(i);
if(i<len-1){
nextIsUpperCase = Character.isUpperCase(str.charAt(i+1));
}else{
nextIsUpperCase = false;
}
if(Character.isLowerCase(c)&& nextIsUpperCase){
if(i<len-1){
sb.append(c).append(SEPARATOR).append(Character.toLowerCase(str.charAt(i+1)));
i++;
}else{
sb.append(c).append(SEPARATOR);
}
}else if(Character.isUpperCase(c)&& !nextIsUpperCase && i > 0){
sb.append(SEPARATOR).append(Character.toLowerCase(str.charAt(i)));
}else{
sb.append(Character.toLowerCase(c));
}
}
return sb.toString();
}
public static void close(ResultSet rs) throws SQLException {
if(rs!=null){
rs.close();
}
}
public static void close(Connection conn) throws SQLException{
if(conn!=null){
conn.close();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.