package com.sourcefour.dao.base;
import java.lang.reflect.Field;
import java.util.Date;
import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
/**
* @author sourcefour
*/
public class AddScalar {
/**
* 将field type 和 Hibernate的类型进行了对应。这里其实不是多余的,如果不进行一定的对应可能会有问题。
* 问题有两个:
* 1. 在oracle中我们可能把一些字段设为NUMBER(%),而在Bean中的字段定的是long。那么查询时可能会报:
* java.math.BeigDecimal不能转换成long等错误
* 2. 如果不这样写的话,可能Bean中的field就得是大写的,如:name就得写成NAME,userCount就得写成USERCOUNT
* 这样是不是很扯(V_V)
*
* @param <T>
* @param sqlQuery
* SQLQuery
* @param clazz
* T.class
* @param fieldList
* 要查询的成员变量名称
*/
public static <T> void addSclar(SQLQuery sqlQuery, Class<T> clazz, List<String> fieldList) {
if (clazz == null) {
throw new NullPointerException("[clazz] could not be null!");
}
if ((fieldList != null) && (fieldList.size() > 0)) {
Field[] fields = clazz.getDeclaredFields();
for (String fieldName : fieldList) {
for (Field field : fields) {
if (fieldName.equals(field.getName())) {
if ((field.getType() == long.class) || (field.getType() == Long.class)) {
sqlQuery.addScalar(field.getName(), Hibernate.LONG);
} else if ((field.getType() == int.class) || (field.getType() == Integer.class)) {
sqlQuery.addScalar(field.getName(), Hibernate.INTEGER);
} else if ((field.getType() == char.class) || (field.getType() == Character.class)) {
sqlQuery.addScalar(field.getName(), Hibernate.CHARACTER);
} else if ((field.getType() == short.class) || (field.getType() == Short.class)) {
sqlQuery.addScalar(field.getName(), Hibernate.SHORT);
} else if ((field.getType() == double.class) || (field.getType() == Double.class)) {
sqlQuery.addScalar(field.getName(), Hibernate.DOUBLE);
} else if ((field.getType() == float.class) || (field.getType() == Float.class)) {
sqlQuery.addScalar(field.getName(), Hibernate.FLOAT);
} else if ((field.getType() == boolean.class) || (field.getType() == Boolean.class)) {
sqlQuery.addScalar(field.getName(), Hibernate.BOOLEAN);
} else if (field.getType() == String.class) {
sqlQuery.addScalar(field.getName(), Hibernate.STRING);
} else if (field.getType() == Date.class) {
sqlQuery.addScalar(field.getName(), Hibernate.TIMESTAMP);
}
}
}
}
}
}
}

sourceFour
- 粉丝: 5
最新资源
- 高职院校升本过程中计算机网络课程教学改革研究(1).docx
- 计算机教学中多媒体技术的应用问题及改善(1).docx
- 浅谈技工院校信息化教学对教学效果的作用和影响(1).docx
- 办公自动化介绍.doc
- 第12章软件工程课件(1).ppt
- 基于程序设计为核心能力的计算机科学与技术专业人才培养模式研究(1).docx
- 浅谈电力通信工程中项目管理的作用(1).docx
- 浅谈PLC在滑油泵组试验器中的应用论文(1).doc
- 肖庄小学教育信息化装备经费管理制度及措施(1).doc
- 黑龙江省特色经济信息化发展新方向(1).docx
- 最新2020年最新公需科目:大数据完整考题库(含标准答案)(1)(1).pdf
- 2017年plc学习心得体会(1).doc
- 计算机系统的可靠性概述(1).pptx
- 翻转课堂教学模式在高校计算机课程教学中的应用(1).docx
- zemax软件培训ppt文档(1).ppt
- C语言实践心得体会范文(1)(1).docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
- 3
前往页