- 浏览: 130651 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (165)
- 数据库 (45)
- 架构 (0)
- java web前端+框架 (9)
- java web后端+框架 (56)
- Eclipse插件 (1)
- 解题思路 (2)
- Eclipse (2)
- linux (6)
- jquery (4)
- 正则 (3)
- jsp (1)
- javascript (8)
- oracle (39)
- 生活 (1)
- weblogic (5)
- tomcat (3)
- Jrebel (1)
- powerdesigner (1)
- svn (1)
- log4j (1)
- IDE (1)
- POI (2)
- jvm (2)
- ssh (1)
- http (1)
- notepad++ (2)
- 润乾 (1)
- 设计模式 (0)
- 实用类Utils (2)
- 算法 (1)
- xml (1)
- 实用类 (2)
最新评论
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.beanutils.BeanMap;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.keyvalue.AbstractMapEntry;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.achievo.core.common.ErrorCodes;
import com.achievo.core.exception.ServiceException;
import com.achievo.ems.web.dto.BaseDto;
import com.achievo.ems.web.dto.exam.ExamineeInfoDto;
import com.achievo.ems.web.dto.exam.PositionDto;
import com.achievo.ems.web.dto.score.PScoreOrigDto;
import com.achievo.ems.web.service.score.ConnUtils2;
/**
* JdbcTemplate帮助类-行记录转换成Dto
*
* @author vernon.chen
*
*/
public class JdbcTemplateRowMapper {
private static Logger logger = LoggerFactory.getLogger(JdbcTemplateRowMapper.class);
private final static String SET = "set";
public static <T extends BaseDto> List<T> resultSet2DtoList(ResultSet rs, T baseDto) {
long start_time=System.currentTimeMillis();
long time_begin =System.currentTimeMillis();
try {
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
List<KeyValuePair2<Integer, String>> kvColList = new ArrayList<KeyValuePair2<Integer, String>>();
for (int column = 1; column <= columnCount; column++){
int columnType = md.getColumnType(column);// 列类型
// String columnName = md.getColumnName(column);//field的原始名字
String columnLabel = md.getColumnLabel(column);// field的别名
KeyValuePair2<Integer, String> kvCol = new KeyValuePair2<Integer, String>(columnType, columnLabel);
kvColList.add(kvCol);
}
List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
while (rs.next()){
System.out.println("******");
HashMap<String, Object> e = new HashMap<String, Object>();
for (KeyValuePair2<Integer, String> kvCol : kvColList) {
String colAlias = kvCol.getValue();// 列别名
Object object = rs.getObject(colAlias);// 列值
e.put(colAlias, object);
}
rows.add(e);
}
Long end_time=System.currentTimeMillis();
logger.info("总共用时"+(end_time-start_time));
return JdbcTemplateRowMapper.rowMap2DtoList(rows, baseDto);
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new ServiceException(ErrorCodes.ERRORCODES_SYSTEM_ERROR.getStrVlue(), e);
}
}
/**
* 多行记录转换为Dto集合
*
* @param rows
* 多行记录
* @param baseDto
* baseDto实例
* @return Dto集合
*/
public static <T extends BaseDto> List<T> rowMap2DtoList(List<Map<String, Object>> rows, T baseDto) {
List<T> dtoList = new ArrayList<T>();
if (CollectionUtils.isEmpty(rows)) {
return dtoList;
}
Map<String, String> filedsMap = new HashMap<String, String>();
T dto = null;
Constructor<T> constructor = null;
Class<?> conargs[] = {};
Class<T> clazz = (Class<T>) baseDto.getClass();
Set<String> keySet = null;
String filedName = null;
Object filedValue = null;
BeanMap beanMap = new BeanMap(baseDto);
@SuppressWarnings("unchecked")
Set<AbstractMapEntry> entrySet = beanMap.entrySet();
String filedNameTmp = null;
for (AbstractMapEntry entry : entrySet) {
filedNameTmp = entry.getKey().toString();
filedsMap.put(filedNameTmp.toUpperCase(), filedNameTmp);
}
for (Map<String, Object> map : rows) {
try {
constructor = clazz.getConstructor(conargs);
dto = (T) constructor.newInstance();
} catch (SecurityException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (NoSuchMethodException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (IllegalArgumentException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InstantiationException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (IllegalAccessException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InvocationTargetException e1) {
logger.error("JdbcTemplateRowMapper", e1);
}
dtoList.add(dto);
keySet = map.keySet();
for (String key : keySet) {
try {
if (keySet.contains(key)) {
filedName = filedsMap.get(key);
filedValue = map.get(key);
} else {
continue;
}
if (StringUtils.isNotBlank(filedName) && null != filedValue) {
JdbcTemplateRowMapper.setProperty(dto, filedName, filedValue);
}
} catch (IllegalAccessException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InvocationTargetException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (Exception e1) {
logger.error("JdbcTemplateRowMapper", e1);
}
}
}
filedsMap.clear();
filedsMap = null;
dto = null;
constructor = null;
conargs = null;
clazz = null;
filedName = null;
filedValue = null;
beanMap.clear();
beanMap = null;
// entrySet.clear();//UnsupportedOperationException
entrySet = null;
filedNameTmp = null;
keySet.clear();
keySet = null;
// int size = rows.size();
rows.clear();// 释放
rows = null;
// logger.debug(size + " rows be cleared.");
//
// logger.debug("多行记录转换为Dto集合-共耗时:" + ConnUtils2.ms2Hms(System.currentTimeMillis() - time_begin));
return dtoList;
}
public static void main(String[] args) throws Throwable {
testReflect();
}
public static <T extends BaseDto> void setProperty(T dto, String filedName, Object filedValue) throws Exception {
// byte(字节) 8 -128 -127 0
// short(短整型) 16 -32768 -32768 0
// int(整型) 32 -2147483648 -2147483648 0
// long(长整型) 64 -9233372036854477808 -9233372036854477808 0
// float(浮点型) 32 -3.40292347E+38 -3.40292347E+38 0.0f
// double(双精度) 64 -1.79769313486231570E+308 -1.79769313486231570E+308 0.0d
// char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
// boolean(布尔型) 1 true/false false
//
Class<? extends BaseDto> dtoCls = dto.getClass();
Class<? extends Object> filedClass = filedValue.getClass();// jdbc返回的值类型
if (java.sql.Timestamp.class.isAssignableFrom(filedClass)) {
filedValue = new Date(((java.sql.Timestamp) filedValue).getTime());
filedClass = Date.class;
}
Field dtoField = null;
try {
dtoField = dtoCls.getDeclaredField(filedName);
} catch (NoSuchFieldException e) {
Field[] fields = dtoCls.getFields();
for (Field field : fields) {
if (field.getName().equals(filedName)) {
dtoField = field;// 获取超类中定义的Filed
break;
}
}
}
Class<?> dtoFiledType = dtoField.getType();
if (filedClass.isAssignableFrom(dtoFiledType)) {// 类型相同
;// noting to do.
} else {// 类型不相同
if (java.math.BigDecimal.class.isAssignableFrom(filedClass)) {// jdbc返回BigDecimal类型
if (short.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).shortValue();
filedClass = short.class;
} else if (int.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).intValue();
filedClass = int.class;
} else if (long.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).longValue();
filedClass = long.class;
} else if (float.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).floatValue();
filedClass = float.class;
} else if (double.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).doubleValue();
filedClass = double.class;
} else if (Short.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).shortValue();
filedClass = Short.class;
} else if (Integer.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).intValue();
filedClass = Integer.class;
} else if (Long.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).longValue();
filedClass = Long.class;
} else if (Float.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).floatValue();
filedClass = Float.class;
} else if (Double.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).doubleValue();
filedClass = Double.class;
} else {
throw new Exception("未定义的数据类型。");
}
}
}
// logger.debug("filedClass.getName()" + ":" + filedClass.getName());
Method method = dtoCls.getMethod(SET + StringUtils.capitalize(filedName), filedClass);
method.invoke(dto, filedValue);
dtoCls = null;
}
public static void testReflect() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
PScoreOrigDto dto = new PScoreOrigDto();
Class<? extends PScoreOrigDto> cls = dto.getClass();
Field[] fields = cls.getDeclaredFields();// 自身定义的所有字段。不包括继承自父类
// Method[] declaredMethods = cls.getDeclaredMethods();
String setter = "set";
String filedName = null;
Object filedValue = null;
Method method = null;
for (Field field : fields) {
filedName = field.getName();
filedValue = "1111";
Class<?> fieldType = field.getType();
// logger.debug("filedName" + ":" + filedName);
if (BaseDto.class.isAssignableFrom(fieldType) || fieldType.isArray() || List.class.isAssignableFrom(fieldType) || Set.class.isAssignableFrom(fieldType)) {
;// 排除BaseDto类型的字段
} else {
method = cls.getMethod(setter + StringUtils.capitalize(filedName), fieldType);
logger.debug("filedName" + ":" + filedName + "\t\t" + "fieldType" + ":" + fieldType);
if (BigDecimal.class.isAssignableFrom(fieldType)) {
filedValue = new BigDecimal(filedValue.toString());
} else if (Integer.class.isAssignableFrom(fieldType)) {
filedValue = new Integer(filedValue.toString());
} else if (Long.class.isAssignableFrom(fieldType)) {
filedValue = new Long(filedValue.toString());
} else if (Double.class.isAssignableFrom(fieldType)) {
filedValue = new Double(filedValue.toString());
} else if (Float.class.isAssignableFrom(fieldType)) {
filedValue = new Float(filedValue.toString());
} else if (Short.class.isAssignableFrom(fieldType)) {
filedValue = new Short(filedValue.toString());
} else if (Byte.class.isAssignableFrom(fieldType)) {
filedValue = new Byte(filedValue.toString());
} else if (Date.class.isAssignableFrom(fieldType)) {
filedValue = DateTimeUtils.parseDate(filedValue.toString());
}
method.invoke(dto, filedValue);
}
}
// method = cls.getMethod(setter + StringUtils.capitalize("createTime"), Date.class);
// method.invoke(dto, new Date());
// method = cls.getMethod(setter + StringUtils.capitalize("createBy"), String.class);
// method.invoke(dto, "createBy");
// method = cls.getMethod(setter + StringUtils.capitalize("updateTime"), Date.class);
// method.invoke(dto, new Date());
// method = cls.getMethod(setter + StringUtils.capitalize("updateBy"), String.class);
// method.invoke(dto, "createBy");
//
// logger.debug("dto.getApplyNo()" + ":" + dto.getApplyNo());
// logger.debug("dto.getCertNo()" + ":" + dto.getCertNo());
// logger.debug("dto.getCertType()" + ":" + dto.getCertType());
// logger.debug("dto.getCreateTime()" + ":" + dto.getCreateTime());
// logger.debug("dto.getCreateBy()" + ":" + dto.getCreateBy());
// logger.debug("dto.getUpdateTime()" + ":" + dto.getUpdateTime());
// logger.debug("dto.getUpdateBy()" + ":" + dto.getUpdateBy());
}
public static void main2(String[] args) {
viewRuntimeMemory();
List<PScoreOrigDto> psoList = new ArrayList<PScoreOrigDto>();
PScoreOrigDto e = null;
long time_begin = System.currentTimeMillis();
for (int i = 0; i < 5 * 2; i++) {
for (int j = 0; j < 20000; j++) {
e = new PScoreOrigDto();
e.setApplyNo("");
e.setCertNo(null);
e.setCertType(" ");
// e.setClusterSubject(new ClusterSubjectDto());
e.setClusterSubjectId("String");
e.setCredtId("String");
e.setExamineeInfo(new ExamineeInfoDto());
e.setException(BigDecimal.ZERO);
e.setExamineeName("String");
e.setFlag(BigDecimal.TEN);
e.setId("String");
e.setPosition(new PositionDto());
e.setPositionClusterName("String");
e.setPositionId("String");
e.setScore(BigDecimal.TEN);
e.setSignature("String");
e.setSubjectId("String");
psoList.add(e);
}
logger.debug("根据导入日志ID删除导入的记录:" + i);
}
logger.debug("根据导入日志ID删除导入的记录-共耗时:" + ConnUtils2.ms2Hms(System.currentTimeMillis() - time_begin));
List<BaseDto> dtoList = new ArrayList<BaseDto>();
Map<String, String> filedsMap = new HashMap<String, String>();
PScoreOrigDto dto = null;
Constructor<PScoreOrigDto> constructor = null;
Class<?> conargs[] = {};
PScoreOrigDto template = new PScoreOrigDto();
Class<PScoreOrigDto> clazz = (Class<PScoreOrigDto>) template.getClass();
BeanMap beanMap = new BeanMap(template);
Set<String> keySet = beanMap.keySet();
String filedName = null;
Object filedValue = null;
@SuppressWarnings("unchecked")
Set<AbstractMapEntry> entrySet = beanMap.entrySet();
String filedNameTmp = null;
for (AbstractMapEntry entry : entrySet) {
filedNameTmp = entry.getKey().toString();
filedsMap.put(filedNameTmp.toUpperCase(), filedNameTmp);
}
time_begin = System.currentTimeMillis();
for (PScoreOrigDto pso : psoList) {
try {
constructor = clazz.getConstructor(conargs);
dto = constructor.newInstance();
} catch (SecurityException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (NoSuchMethodException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (IllegalArgumentException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InstantiationException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (IllegalAccessException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InvocationTargetException e1) {
logger.error("JdbcTemplateRowMapper", e1);
}
dtoList.add(dto);
for (String key : keySet) {
try {
filedName = key;
filedValue = BeanUtils.getProperty(pso, key);
if (StringUtils.isNotBlank(filedName) && null != filedValue) {
if ("position".equals(key) || "examineeInfo".equals(key) || "clusterSubject".equals(key)) {
} else {
BeanUtils.setProperty(dto, filedName, filedValue);
}
}
} catch (IllegalAccessException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InvocationTargetException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (NoSuchMethodException e1) {
logger.error("JdbcTemplateRowMapper", e1);
}
}
}
// logger.debug("转换(" + psoList.size() + ")个实体-共耗时:" + ConnUtils2.ms2Hms(System.currentTimeMillis() - time_begin));
filedsMap.clear();
filedsMap = null;
dto = null;
constructor = null;
conargs = null;
clazz = null;
filedName = null;
filedValue = null;
beanMap.clear();
beanMap = null;
// entrySet.clear();//UnsupportedOperationException
entrySet = null;
filedNameTmp = null;
// keySet.clear();//UnsupportedOperationException
keySet = null;
}
/**
* 查看运行时内存使用情况
*/
public static void viewRuntimeMemory() {
long maxMemory = java.lang.Runtime.getRuntime().maxMemory();// 这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存,以字节为单位
long totalMemory = java.lang.Runtime.getRuntime().totalMemory();// 这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有内存。
long freeMemory = java.lang.Runtime.getRuntime().freeMemory();// 从操作系统那里挖过来而又没有用上的内存,实际上就是 freeMemory()
logger.debug("从操作系统那里挖到的最大的内存:" + maxMemory / 1024 / 1024 + "M");
logger.debug("虚拟机这个进程当时所占用的所有内存:" + totalMemory / 1024 / 1024 + "M");
logger.debug("从操作系统那里挖过来而又没有用上的内存:" + freeMemory / 1024 / 1024 + "M");
}
}
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.beanutils.BeanMap;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.keyvalue.AbstractMapEntry;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.achievo.core.common.ErrorCodes;
import com.achievo.core.exception.ServiceException;
import com.achievo.ems.web.dto.BaseDto;
import com.achievo.ems.web.dto.exam.ExamineeInfoDto;
import com.achievo.ems.web.dto.exam.PositionDto;
import com.achievo.ems.web.dto.score.PScoreOrigDto;
import com.achievo.ems.web.service.score.ConnUtils2;
/**
* JdbcTemplate帮助类-行记录转换成Dto
*
* @author vernon.chen
*
*/
public class JdbcTemplateRowMapper {
private static Logger logger = LoggerFactory.getLogger(JdbcTemplateRowMapper.class);
private final static String SET = "set";
public static <T extends BaseDto> List<T> resultSet2DtoList(ResultSet rs, T baseDto) {
long start_time=System.currentTimeMillis();
long time_begin =System.currentTimeMillis();
try {
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
List<KeyValuePair2<Integer, String>> kvColList = new ArrayList<KeyValuePair2<Integer, String>>();
for (int column = 1; column <= columnCount; column++){
int columnType = md.getColumnType(column);// 列类型
// String columnName = md.getColumnName(column);//field的原始名字
String columnLabel = md.getColumnLabel(column);// field的别名
KeyValuePair2<Integer, String> kvCol = new KeyValuePair2<Integer, String>(columnType, columnLabel);
kvColList.add(kvCol);
}
List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
while (rs.next()){
System.out.println("******");
HashMap<String, Object> e = new HashMap<String, Object>();
for (KeyValuePair2<Integer, String> kvCol : kvColList) {
String colAlias = kvCol.getValue();// 列别名
Object object = rs.getObject(colAlias);// 列值
e.put(colAlias, object);
}
rows.add(e);
}
Long end_time=System.currentTimeMillis();
logger.info("总共用时"+(end_time-start_time));
return JdbcTemplateRowMapper.rowMap2DtoList(rows, baseDto);
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new ServiceException(ErrorCodes.ERRORCODES_SYSTEM_ERROR.getStrVlue(), e);
}
}
/**
* 多行记录转换为Dto集合
*
* @param rows
* 多行记录
* @param baseDto
* baseDto实例
* @return Dto集合
*/
public static <T extends BaseDto> List<T> rowMap2DtoList(List<Map<String, Object>> rows, T baseDto) {
List<T> dtoList = new ArrayList<T>();
if (CollectionUtils.isEmpty(rows)) {
return dtoList;
}
Map<String, String> filedsMap = new HashMap<String, String>();
T dto = null;
Constructor<T> constructor = null;
Class<?> conargs[] = {};
Class<T> clazz = (Class<T>) baseDto.getClass();
Set<String> keySet = null;
String filedName = null;
Object filedValue = null;
BeanMap beanMap = new BeanMap(baseDto);
@SuppressWarnings("unchecked")
Set<AbstractMapEntry> entrySet = beanMap.entrySet();
String filedNameTmp = null;
for (AbstractMapEntry entry : entrySet) {
filedNameTmp = entry.getKey().toString();
filedsMap.put(filedNameTmp.toUpperCase(), filedNameTmp);
}
for (Map<String, Object> map : rows) {
try {
constructor = clazz.getConstructor(conargs);
dto = (T) constructor.newInstance();
} catch (SecurityException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (NoSuchMethodException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (IllegalArgumentException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InstantiationException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (IllegalAccessException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InvocationTargetException e1) {
logger.error("JdbcTemplateRowMapper", e1);
}
dtoList.add(dto);
keySet = map.keySet();
for (String key : keySet) {
try {
if (keySet.contains(key)) {
filedName = filedsMap.get(key);
filedValue = map.get(key);
} else {
continue;
}
if (StringUtils.isNotBlank(filedName) && null != filedValue) {
JdbcTemplateRowMapper.setProperty(dto, filedName, filedValue);
}
} catch (IllegalAccessException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InvocationTargetException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (Exception e1) {
logger.error("JdbcTemplateRowMapper", e1);
}
}
}
filedsMap.clear();
filedsMap = null;
dto = null;
constructor = null;
conargs = null;
clazz = null;
filedName = null;
filedValue = null;
beanMap.clear();
beanMap = null;
// entrySet.clear();//UnsupportedOperationException
entrySet = null;
filedNameTmp = null;
keySet.clear();
keySet = null;
// int size = rows.size();
rows.clear();// 释放
rows = null;
// logger.debug(size + " rows be cleared.");
//
// logger.debug("多行记录转换为Dto集合-共耗时:" + ConnUtils2.ms2Hms(System.currentTimeMillis() - time_begin));
return dtoList;
}
public static void main(String[] args) throws Throwable {
testReflect();
}
public static <T extends BaseDto> void setProperty(T dto, String filedName, Object filedValue) throws Exception {
// byte(字节) 8 -128 -127 0
// short(短整型) 16 -32768 -32768 0
// int(整型) 32 -2147483648 -2147483648 0
// long(长整型) 64 -9233372036854477808 -9233372036854477808 0
// float(浮点型) 32 -3.40292347E+38 -3.40292347E+38 0.0f
// double(双精度) 64 -1.79769313486231570E+308 -1.79769313486231570E+308 0.0d
// char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
// boolean(布尔型) 1 true/false false
//
Class<? extends BaseDto> dtoCls = dto.getClass();
Class<? extends Object> filedClass = filedValue.getClass();// jdbc返回的值类型
if (java.sql.Timestamp.class.isAssignableFrom(filedClass)) {
filedValue = new Date(((java.sql.Timestamp) filedValue).getTime());
filedClass = Date.class;
}
Field dtoField = null;
try {
dtoField = dtoCls.getDeclaredField(filedName);
} catch (NoSuchFieldException e) {
Field[] fields = dtoCls.getFields();
for (Field field : fields) {
if (field.getName().equals(filedName)) {
dtoField = field;// 获取超类中定义的Filed
break;
}
}
}
Class<?> dtoFiledType = dtoField.getType();
if (filedClass.isAssignableFrom(dtoFiledType)) {// 类型相同
;// noting to do.
} else {// 类型不相同
if (java.math.BigDecimal.class.isAssignableFrom(filedClass)) {// jdbc返回BigDecimal类型
if (short.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).shortValue();
filedClass = short.class;
} else if (int.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).intValue();
filedClass = int.class;
} else if (long.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).longValue();
filedClass = long.class;
} else if (float.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).floatValue();
filedClass = float.class;
} else if (double.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).doubleValue();
filedClass = double.class;
} else if (Short.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).shortValue();
filedClass = Short.class;
} else if (Integer.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).intValue();
filedClass = Integer.class;
} else if (Long.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).longValue();
filedClass = Long.class;
} else if (Float.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).floatValue();
filedClass = Float.class;
} else if (Double.class.isAssignableFrom(dtoFiledType)) {
filedValue = ((java.math.BigDecimal) filedValue).doubleValue();
filedClass = Double.class;
} else {
throw new Exception("未定义的数据类型。");
}
}
}
// logger.debug("filedClass.getName()" + ":" + filedClass.getName());
Method method = dtoCls.getMethod(SET + StringUtils.capitalize(filedName), filedClass);
method.invoke(dto, filedValue);
dtoCls = null;
}
public static void testReflect() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
PScoreOrigDto dto = new PScoreOrigDto();
Class<? extends PScoreOrigDto> cls = dto.getClass();
Field[] fields = cls.getDeclaredFields();// 自身定义的所有字段。不包括继承自父类
// Method[] declaredMethods = cls.getDeclaredMethods();
String setter = "set";
String filedName = null;
Object filedValue = null;
Method method = null;
for (Field field : fields) {
filedName = field.getName();
filedValue = "1111";
Class<?> fieldType = field.getType();
// logger.debug("filedName" + ":" + filedName);
if (BaseDto.class.isAssignableFrom(fieldType) || fieldType.isArray() || List.class.isAssignableFrom(fieldType) || Set.class.isAssignableFrom(fieldType)) {
;// 排除BaseDto类型的字段
} else {
method = cls.getMethod(setter + StringUtils.capitalize(filedName), fieldType);
logger.debug("filedName" + ":" + filedName + "\t\t" + "fieldType" + ":" + fieldType);
if (BigDecimal.class.isAssignableFrom(fieldType)) {
filedValue = new BigDecimal(filedValue.toString());
} else if (Integer.class.isAssignableFrom(fieldType)) {
filedValue = new Integer(filedValue.toString());
} else if (Long.class.isAssignableFrom(fieldType)) {
filedValue = new Long(filedValue.toString());
} else if (Double.class.isAssignableFrom(fieldType)) {
filedValue = new Double(filedValue.toString());
} else if (Float.class.isAssignableFrom(fieldType)) {
filedValue = new Float(filedValue.toString());
} else if (Short.class.isAssignableFrom(fieldType)) {
filedValue = new Short(filedValue.toString());
} else if (Byte.class.isAssignableFrom(fieldType)) {
filedValue = new Byte(filedValue.toString());
} else if (Date.class.isAssignableFrom(fieldType)) {
filedValue = DateTimeUtils.parseDate(filedValue.toString());
}
method.invoke(dto, filedValue);
}
}
// method = cls.getMethod(setter + StringUtils.capitalize("createTime"), Date.class);
// method.invoke(dto, new Date());
// method = cls.getMethod(setter + StringUtils.capitalize("createBy"), String.class);
// method.invoke(dto, "createBy");
// method = cls.getMethod(setter + StringUtils.capitalize("updateTime"), Date.class);
// method.invoke(dto, new Date());
// method = cls.getMethod(setter + StringUtils.capitalize("updateBy"), String.class);
// method.invoke(dto, "createBy");
//
// logger.debug("dto.getApplyNo()" + ":" + dto.getApplyNo());
// logger.debug("dto.getCertNo()" + ":" + dto.getCertNo());
// logger.debug("dto.getCertType()" + ":" + dto.getCertType());
// logger.debug("dto.getCreateTime()" + ":" + dto.getCreateTime());
// logger.debug("dto.getCreateBy()" + ":" + dto.getCreateBy());
// logger.debug("dto.getUpdateTime()" + ":" + dto.getUpdateTime());
// logger.debug("dto.getUpdateBy()" + ":" + dto.getUpdateBy());
}
public static void main2(String[] args) {
viewRuntimeMemory();
List<PScoreOrigDto> psoList = new ArrayList<PScoreOrigDto>();
PScoreOrigDto e = null;
long time_begin = System.currentTimeMillis();
for (int i = 0; i < 5 * 2; i++) {
for (int j = 0; j < 20000; j++) {
e = new PScoreOrigDto();
e.setApplyNo("");
e.setCertNo(null);
e.setCertType(" ");
// e.setClusterSubject(new ClusterSubjectDto());
e.setClusterSubjectId("String");
e.setCredtId("String");
e.setExamineeInfo(new ExamineeInfoDto());
e.setException(BigDecimal.ZERO);
e.setExamineeName("String");
e.setFlag(BigDecimal.TEN);
e.setId("String");
e.setPosition(new PositionDto());
e.setPositionClusterName("String");
e.setPositionId("String");
e.setScore(BigDecimal.TEN);
e.setSignature("String");
e.setSubjectId("String");
psoList.add(e);
}
logger.debug("根据导入日志ID删除导入的记录:" + i);
}
logger.debug("根据导入日志ID删除导入的记录-共耗时:" + ConnUtils2.ms2Hms(System.currentTimeMillis() - time_begin));
List<BaseDto> dtoList = new ArrayList<BaseDto>();
Map<String, String> filedsMap = new HashMap<String, String>();
PScoreOrigDto dto = null;
Constructor<PScoreOrigDto> constructor = null;
Class<?> conargs[] = {};
PScoreOrigDto template = new PScoreOrigDto();
Class<PScoreOrigDto> clazz = (Class<PScoreOrigDto>) template.getClass();
BeanMap beanMap = new BeanMap(template);
Set<String> keySet = beanMap.keySet();
String filedName = null;
Object filedValue = null;
@SuppressWarnings("unchecked")
Set<AbstractMapEntry> entrySet = beanMap.entrySet();
String filedNameTmp = null;
for (AbstractMapEntry entry : entrySet) {
filedNameTmp = entry.getKey().toString();
filedsMap.put(filedNameTmp.toUpperCase(), filedNameTmp);
}
time_begin = System.currentTimeMillis();
for (PScoreOrigDto pso : psoList) {
try {
constructor = clazz.getConstructor(conargs);
dto = constructor.newInstance();
} catch (SecurityException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (NoSuchMethodException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (IllegalArgumentException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InstantiationException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (IllegalAccessException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InvocationTargetException e1) {
logger.error("JdbcTemplateRowMapper", e1);
}
dtoList.add(dto);
for (String key : keySet) {
try {
filedName = key;
filedValue = BeanUtils.getProperty(pso, key);
if (StringUtils.isNotBlank(filedName) && null != filedValue) {
if ("position".equals(key) || "examineeInfo".equals(key) || "clusterSubject".equals(key)) {
} else {
BeanUtils.setProperty(dto, filedName, filedValue);
}
}
} catch (IllegalAccessException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (InvocationTargetException e1) {
logger.error("JdbcTemplateRowMapper", e1);
} catch (NoSuchMethodException e1) {
logger.error("JdbcTemplateRowMapper", e1);
}
}
}
// logger.debug("转换(" + psoList.size() + ")个实体-共耗时:" + ConnUtils2.ms2Hms(System.currentTimeMillis() - time_begin));
filedsMap.clear();
filedsMap = null;
dto = null;
constructor = null;
conargs = null;
clazz = null;
filedName = null;
filedValue = null;
beanMap.clear();
beanMap = null;
// entrySet.clear();//UnsupportedOperationException
entrySet = null;
filedNameTmp = null;
// keySet.clear();//UnsupportedOperationException
keySet = null;
}
/**
* 查看运行时内存使用情况
*/
public static void viewRuntimeMemory() {
long maxMemory = java.lang.Runtime.getRuntime().maxMemory();// 这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存,以字节为单位
long totalMemory = java.lang.Runtime.getRuntime().totalMemory();// 这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有内存。
long freeMemory = java.lang.Runtime.getRuntime().freeMemory();// 从操作系统那里挖过来而又没有用上的内存,实际上就是 freeMemory()
logger.debug("从操作系统那里挖到的最大的内存:" + maxMemory / 1024 / 1024 + "M");
logger.debug("虚拟机这个进程当时所占用的所有内存:" + totalMemory / 1024 / 1024 + "M");
logger.debug("从操作系统那里挖过来而又没有用上的内存:" + freeMemory / 1024 / 1024 + "M");
}
}
发表评论
-
eclipse java代码格式化 javaformatter20150123.zip
2015-01-23 11:30 716eclipse java代码格式化 javaformatter ... -
List to Map
2015-01-21 17:22 490/** * <p>将List变为Map</p ... -
读取access工具类-ReadAccessUtil2
2015-01-06 13:52 556import com.healthmarketscience. ... -
ParameterizedType获取java泛型参数类型
2014-11-14 15:15 704ParameterizedType获取java泛型参数类型 ... -
分页帮助类-oracle-java
2014-10-09 17:46 461/** * 分页帮助类 * * @author ver ... -
java自动实例化List AutoArrayList
2014-07-21 15:51 741import java.util.ArrayList; p ... -
单一登录过滤器
2014-06-20 17:13 399/** * 单一登录过滤器 * * @author v ... -
正则 java 查找 打印 所有匹配项
2014-06-18 11:26 646package com.test.regex; import ... -
第3方包读取Access
2014-05-26 16:07 671package com.test; import java. ... -
多线程加签验签例子.zip
2014-05-26 16:08 515多线程加签验签例子.zip -
DateTimeUtils
2014-05-26 16:08 653import java.text.DateFormat; im ... -
listToMap
2014-05-26 16:09 440/** * List实用类 * * @author v ... -
KeyValuePair2
2015-05-19 15:44 510/** * 键值对 * * @author verno ... -
OrderUtil -排序工具
2014-05-22 09:35 665/** * 排序工具 * * @author vern ... -
ZipUtils
2014-05-22 09:35 449import java.io.BufferedOutputSt ... -
TimerUtils
2014-05-22 09:34 482import org.slf4j.Logger; import ... -
Excel View 4 Spring
2014-05-22 09:29 344Excel View 4 Spring @RequestMa ... -
DOMUtils xml操作实用类
2014-04-07 21:41 807/* * Copyright 2001-2004 The A ... -
生成验证码 数学+字母
2014-04-01 10:08 443public static String getCharAnd ... -
ConnUtils2程序耗时输出 oracle.sql.Clob类型转换成String类型
2014-03-29 10:00 683package com.achievo.ems.web.ser ...
相关推荐
基于万能逼近原理的自适应模糊控制算法在多自由度AUV运动控制中的应用与抗干扰补偿Simulink仿真研究,自适应模糊控制算法的万能逼近原理与多自由度AUV运动控制的抗干扰补偿技术——基于Simulink的仿真研究,万能逼近原理自适应模糊控制算法的多自由度AUV运动控制抗干扰补偿simulink仿真 ,核心关键词:万能逼近原理; 自适应模糊控制算法; 多自由度AUV运动控制; 抗干扰补偿; Simulink仿真。,基于万能逼近的模糊控制算法多自由度AUV抗干扰补偿Simulink仿真
deepseek最新资讯、配置方法、使用技巧,持续更新中
deepseek最新资讯、配置方法、使用技巧,持续更新中
结合扩展卡尔曼滤波与滑模观测器的策略:优化电角度估计,反电势波形逼近完美正弦波,结合扩展卡尔曼滤波与滑模观测器的反电势波形优化:正弦波形展现近乎完美精度,电角度估算与实际应用差异微小,扩展卡尔曼滤波与滑模观测器的结合,反电势波形近乎完美的正弦波形,观测器估算转子电角度与实际电角度相差0.3弧度左右,转速跟随效果较好。 ,核心关键词:扩展卡尔曼滤波; 滑模观测器; 反电势波形; 转子电角度估算; 转速跟随效果。,卡尔曼滑模观测器:优化正弦波转子角度与转速估算
毕业设计_基于springboot+vue的**学生公寓管理系统**【源码+sql+可运行】【**50217**】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码; 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - **业务管理:业务管理:公寓信息、房间信息、入住记录、学生信息** 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!
1、文件内容:xorg-x11-server-source-1.20.4-29.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/xorg-x11-server-source-1.20.4-29.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
1、文件内容:yum-plugin-ps-1.1.31-54.el7_8.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/yum-plugin-ps-1.1.31-54.el7_8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
基于模型预测控制(MPC)的无人船与无人车编队一致性协同控制研究(附原文献),基于模型预测控制(MPC)的无人船与无人车编队一致性协同控制研究(附原文献),无人船编队 无人车编队 MPC 模型预测控制 多智能体协同控制 一致性 MATLAB 无人车 USV 带原文献 ,无人船编队; 无人车编队; MPC 模型预测控制; 多智能体协同控制; 一致性; MATLAB; USV; 原文献,无人系统协同控制:MPC模型预测控制下的多智能体编队与一致性研究(原文献支撑)
4套中级通信工程师综合真题及答案(2019,2020,2021,2023),适用于需要考中级通信工程师的人群
deepseek最新资讯,配置方法,使用技巧,持续更新中
基于matlab的锁相环PLL相位噪声拟合仿真代码集合:多个版本建模与仿真,高质量的锁相环PLL仿真代码集合:Matlab与Simulink建模研究,[1]锁相环 PLL 几个版本的matlab相位噪声拟合仿真代码,质量杠杠的,都是好东西 [2]锁相环matlab建模稳定性仿真,好几个版本 [3]锁相环2.4G小数分频 simulink建模仿真 ,PLL; Matlab相位噪声拟合仿真; Matlab建模稳定性仿真; 锁相环2.4G小数分频Simulink建模仿真,MATLAB仿真系列:锁相环PLL及分频器建模仿真
exceptionLogs.zip
基于光伏微网的经济性与并网负荷波动率双目标优化调度策略:蓄电池与V2G协同管理策略仿真研究,MATLAB下光储充微网结合电动汽车V2G的多目标协同调度策略研究:经济性与并网负荷波动性的对比分析,MATLAB代码:考虑V2G的光储充一体化微网多目标优化调度策略 关键词:光储充微网 电电汽车V2G 多目标优化 蓄电池优化 调度 参考文档:《光伏微网下考虑V2G补偿蓄电池容量的双目标优化调度策略》,已经投稿EI会议,中文说明文档可联系我咨询 仿真平台:MATLAB 平台 优势:代码注释详实,适合参考学习,相关成果已经采用,程序非常精品,请仔细辨识 主要内容:过建立光伏微网中以经济性和并网负荷波动率为双目标的蓄电池和V2G的协同调度模型。 采用粒子群算法,对电网、微网调度中心和电动汽车用户三方在无、无序、转移和调度V2G电动汽车负荷四种运行模式下的经济和安全影响进行对比。 最后,根据算例分析,求解四种模式下两级负荷曲线及经济收益表。 对比分析得出,引入V2G可以替代部分容量的蓄电池,使光伏微网在负荷峰谷平抑、三方经济和安全等方面进一步优化。 求解采用的是PSO算法(粒子群算法),求解效果极
javascript 动态网页设计期末大作业(自己手写的,高分期末作业),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期
混合智能体系统编队控制:分布式优化与15异构混合阶的挑战,异构混合阶智能体系统编队控制的分布式优化策略研究,15异构混合阶多智能体系统编队控制的分布式优化(无参考文献) ,核心关键词:15异构混合阶; 多智能体系统; 编队控制; 分布式优化; 无参考文献。,15混合阶多智能体系统编队分布式优化控制
javascript 动态网页设计期末大作业(自己手写的,很适合期末作业),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascrip
X光安检OPIXray数据集已经转换为VOC格式,可直接转换为为YOLO
DataX--Web:图形化界面简化大数据任务管理_datax-web
# 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!