给大家推荐个靠谱的公众号程序员探索之路,大家一起加油
package com.qf.dbutils;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.dbutils.ResultSetHandler;
public class GetBeanAnn<T> implements ResultSetHandler<T> {
private Class<T> cls = null;
public GetBeanAnn(Class<T> cls) {
super();
this.cls = cls;
}
public String getTableName() {
// 获取表名
TableSwap annotation = cls.getAnnotation(TableSwap.class);
return annotation.value();
}
@Override
public T handle(ResultSet rs) throws SQLException {
// TODO Auto-generated method stub
try {
if (rs.next()) {
T obj = cls.newInstance();
// 根据反射获取类的所有属性
Field[] fields = cls.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
fields[i].setAccessible(true);
// 获取属性上面的注解 也就是列名
TableSwap field = fields[i].getAnnotation(TableSwap.class);
// 根据属性名 给 obj 对应的属性赋值 值是根据列名获取出来的
fields[i].set(obj, rs.getObject(field.value()));
}
return obj;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
package com.qf.dbutils;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.ResultSetHandler;
public class GetBeanListAnn<T> implements ResultSetHandler<List<T>> {
private Class<T> cls = null;
public GetBeanListAnn(Class<T> cls) {
super();
this.cls = cls;
}
public String getTableName() {
// 获取表名
TableSwap annotation = cls.getAnnotation(TableSwap.class);
return annotation.value();
}
@Override
public List<T> handle(ResultSet rs) throws SQLException {
// TODO Auto-generated method stub
try {
Field[] fields = cls.getDeclaredFields();
List<T> list = new ArrayList<T>();
while (rs.next()) {
T obj = cls.newInstance();
// 根据反射获取类的所有属性
for (int i = 0; i < fields.length; i++) {
fields[i].setAccessible(true);
// 获取属性上面的注解 也就是列名
TableSwap field = fields[i].getAnnotation(TableSwap.class);
// 根据属性名 给 obj 对应的属性赋值 值是根据列名获取出来的
fields[i].set(obj, rs.getObject(field.value()));
}
list.add(obj);
}
return list;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}