数据库(ORACLE)查出数据封装到实体
说明:
1、对查出的数据做相应的转换,使⽤视图实现转换
2、转换的⽬的是为了处理⼀些⽐较复杂的数据类型,⽐如DATA,TIMESTRAMP等,把这些通过类型转为varchar 型,⽅便封装到实体
案例代码:
String sql1 = "select * from v_ab01_upload where aaz800='0' and aaz400="
+ aaz400
+ " and aaa322="
+ aaa322
+ " and aab001='"
+ aab001 + "' order by xh";
List listab01_upload = List(sql1,
V_AB01_UPLOAD.class);
V_AB01_UPLOAD jcxx = new V_AB01_UPLOAD();
for (int p = 0; p < listab01_upload.size(); p++) {
jcxx = (V_AB01_UPLOAD) (p);
}
⼯具类:
public class DbUtils {
private static DataSourceFactory dsf = (DataSourceFactory) Bean("dataSourceTarget");
private static String driverClass = "oracle.jdbc.driver.OracleDriver";
//没什么好说的,获取数据库连接
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driverClass);
conn = getTemplate().getDataSource().getConnection();;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/*
* 将rs结果转换成对象列表
* @param rs jdbc结果集
* @param clazz 对象的映射类
* return 封装了对象的结果列表
*/
public static List populate(ResultSet rs , Class clazz) throws NoSuchMethodException, SecurityException, Exception{
//结果集的元素对象
ResultSetMetaData rsmd = rs.getMetaData();
//获取结果集的元素个数
int count = ColumnCount();
String[] colNames = new String[count];
for (int i = 1; i <= count; i++) {
colNames[i - 1] = ColumnName(i);
}
// System.out.println("#");
// for(int i = 1;i<=colCount;i++){
// System.out.ColumnName(i));
// System.out.ColumnClassName(i));
// System.out.println("#");
// }
/
/返回结果的列表集合
List list = new ArrayList();
//业务对象的属性数组
Field[] fields = DeclaredFields();
()){//对每⼀条记录进⾏操作
Object obj = wInstance();//构造业务对象实体
//将每⼀个字段取出进⾏赋值
// for(int i = 1;i<=colNames.length;i++){
// String colName =colNames[i];
// System.out.println("colName:="+colName);
//寻该列对应的对象属性
for(int j=0;j<fields.length;j++){
Object value =null;
Field f = fields[j];
System.out.println("Name:="+f.getName());
for(int i = 0;i<colNames.length;i++){
String colName =colNames[i];
System.out.println("colName:="+colName);
System.out.println("Name:="+f.getName());
Name().equals(colName)){
Name());
break;
}
}
if(value==null){
value="";
}
System.out.GenericType());//打印该类的所有属性类型
// 如果类型是String
if (f.getGenericType().toString().equals(
"class java.lang.String")) { // 如果type是类类型,则前⾯包含"class ",后⾯跟类名 // 拿到该属性的gettet⽅法
value = (String)((value==null?"":value)).toString();// 调⽤getter⽅法获取属性值
if (value != null) {
System.out.println("String type:" + value);
}
}
// 如果类型是Long
if (f.getGenericType().toString().equals(
"class java.lang.Long")) { // 如果type是类类型,则前⾯包含"class ",后⾯跟类名 // 拿到该属性的gettet⽅法
if(value==""){
value=null;
}else{
value = Long.String());// 调⽤getter⽅法获取属性值 }
if (value != null) {
System.out.println("Long type:" + value);
}
"class java.lang.Integer")) {
value = (Integer)value;// 调⽤getter⽅法获取属性值
if (value != null) {
System.out.println("Integer type:" + value);
}
}
// 如果类型是Double
if (f.getGenericType().toString().equals(
"class java.lang.Double")) {
value = (Double)value;// 调⽤getter⽅法获取属性值
if (value != null) {
System.out.println("Double type:" + value);
}
}
// 如果类型是Boolean 是封装类
if (f.getGenericType().toString().equals(
"class java.lang.Boolean")) {
value = (Boolean)value;// 调⽤getter⽅法获取属性值
if (value != null) {
System.out.println("Boolean type:" + value);
}
}
// 如果类型是boolean 基本数据类型不⼀样这⾥有点说名如果定义名是 isXXX的那就全都是isXXX的 // 反射不到getter的具体名
if (f.getGenericType().toString().equals("boolean")) {
value = (Boolean)value;// 调⽤getter⽅法获取属性值
if (value != null) {
System.out.println("boolean type:" + value);
}
}
// 如果类型是Date
if (f.getGenericType().toString().equals(
"class java.util.Date")) {
// value = (Date)value;// 调⽤getter⽅法获取属性值
Name());
if (value != null) {
System.out.println("Date type:" + value);
}
}
// 如果类型是Short
if (f.getGenericType().toString().equals(
"class java.lang.Short")) {
value = (Short)value;// 调⽤getter⽅法获取属性值
if (value != null) {
System.out.println("Short type:" + value);
}
}
// 如果类型是BigDecimal
if (f.getGenericType().toString().equals(
"class java.math.BigDecimal")) {
value = (BigDecimal)value;// 调⽤getter⽅法获取属性值
if (value != null) {
System.out.println("BigDecimal type:" + value);
"class java.sql.Timestamp")) {
Name());
if (value != null) {
System.out.println("Timestamp type:" + value);
}
}
//如果匹配进⾏赋值
boolean flag = f.isAccessible();
f.setAccessible(true);
f.set(obj, value);
f.setAccessible(flag);
}
/
/ }
list.add(obj);
}
return list;
}
public static JdbcTemplate getTemplate() {
YbJdbcTemplate();
}
// 把⼀个字符串的第⼀个字母⼤写、效率是最⾼的、
private static String getMethodName(String fildeName) throws Exception{ byte[] items = Bytes();
items[0] = (byte) ((char) items[0] - 'a' + 'A');
return new String(items);
}
public static List getList(String sql, Class clazz){
Connection conn = Conn();
ResultSet rs = null;
PreparedStatement psmt = null;
System.out.println(conn);
List list=null;
try {
psmt = conn.prepareStatement(sql);
rs = uteQuery();
try {
list = DbUtils.populate(rs, clazz);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs=null;
}
if(psmt!=null){
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
psmt=null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn=null;
}
}
return list;
}
bigdecimal转换为integer}
实体类:
@Entity
@Table(name = "V_AB01_UPLOAD")
public class V_AB01_UPLOAD implements Serializable {
/**
* 社保业务系统编码
*/
private java.lang.String AAZ400;
@Column(name = "AAZ400", length = 10)
public java.lang.String getAAZ400() {
return this.AAZ400;
}
public void setAAZ400(final java.lang.String AAZ400) { this.AAZ400 = AAZ400;
}
/**
* UUID
*/
private java.lang.String SBUUID;
@Column(name = "SBUUID", length = 32)
public java.lang.String getSBUUID() {
return this.SBUUID;
}
public void setSBUUID(final java.lang.String SBUUID) {
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论