1. 程式人生 > >java 反射: 當Timestamp型別的屬性值為null時,設定預設值

java 反射: 當Timestamp型別的屬性值為null時,設定預設值

import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Timestamp;

class Person {
    private String name;
    private int age;

    private Timestamp birth;

    public Timestamp getBirth() {
        return birth;
    }

    
public void setBirth(Timestamp birth) { this.birth = birth; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public
int getAge() { return this.age; } } /*****************************************************/ public class InvokeSetterMethod { public static void main(String[] args) { Person p = new Person(); invokeSetterMethodByType(p, Person.class, "java.sql.Timestamp", Timestamp.valueOf(
"1111-11-11 11:11:11"), Timestamp.class); p.setBirth(Timestamp.valueOf("2014-12-11 00:00:00")); System.out.println(p.getBirth()); } /** * 呼叫setter方法 * * @param obj * @param att * @param value * @param type */ public static void invokeSetterMethodByType(Object obj, Class cl, String methodType, Timestamp param, Class<?> paramType) { try { Field[] f = cl.getDeclaredFields(); for (Field field : f) { // 屬性型別 String type = field.getType().getName(); // 屬性名 String name = field.getName(); // 屬性值 PropertyDescriptor pd = new PropertyDescriptor(field.getName(), cl); Method getMethod = pd.getReadMethod(); Object o = getMethod.invoke(obj); // 當Timestamp型別的屬性值為null時,設定預設值 if (methodType.equals(type) && null == o) { setter(obj, name, param, paramType); } } } catch (Exception e) { e.printStackTrace(); } } /** * 呼叫setter方法 * * @param obj * @param att * @param value * @param type */ public static void setter(Object obj, String att, Object value, Class<?> type) { try { Method met = obj.getClass().getMethod("set" + initStr(att), type); met.invoke(obj, value); } catch (Exception e) { e.printStackTrace(); } } /** * 呼叫getter方法 * * @param obj * @param att */ public static void getter(Object obj, String att) { try { Method met = obj.getClass().getMethod("get" + initStr(att)); System.out.println(met.invoke(obj)); } catch (Exception e) { e.printStackTrace(); } } /** * 將單詞的首字母大寫 * * @param old * @return */ public static String initStr(String old) { String str = old.substring(0, 1).toUpperCase() + old.substring(1); return str; } }

相關推薦

java 反射 Timestamp型別屬性null設定預設

import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Timestamp; class Person {

Mybatis使用bean傳傳入Null提示“無效的列型別”的解決辦法

提示: Try setting a different JdbcType forthis parameter or a differentjdbcTypeForNull configuration property. Cause: java.sql.SQLException: 無效的列型別: 1111

類的指標被賦NULL類的哪些成員還可以被該指標呼叫

轉自:https://blog.csdn.net/xiaoluer/article/details/53337292 該問題源自於一道面試題,題目如下所示: 看如下程式碼,請問能不能編譯通過?如果能編譯通過能不能執行成功?並說明原因     clas

mysql查詢欄位空字串預設 (2、null給一預設

1、 case when post_ask_pay.price='' then 10 else post_ask_pay.price end as priceSELECT distinct post_ask_pay.user_id as ask_user_id,post_

Java-註解-屬性value的三種情況

1.自定義註解只有一個屬性時,且屬性名為value時,賦值時value可省略。 註解定義: public @interface Table { public String value(); } 註解使用: @Table("student") public class Stud

java給一個物件賦null發生了什麼

比如下面的程式碼 String[] arr = new String[10]; arr=null; 將arr這個引用置空,不指向任何物件。 上面new的那個陣列物件,則沒有任何引用指向它,垃圾回收器可以回收此物件。 java中物件引用放在棧中,

input中的typefile各瀏覽器的表現形式不同

button tex ati color 不同 ack 需要 標簽 圖片 如果想使各瀏覽器下的表現形式相同,需要對該input元素隱藏,然後再改元素下方添加標簽。其html寫法如下 <div class="input-file"> <input type

使用application作用域實現用戶重復登錄擠掉原來的用戶

ont 必須 用戶名 使用 執行 gets quest return http 使用application作用域實現:當用戶重復登錄時,擠掉原來的用戶 一、實現思想 1.application(ServletContext)是保存在服務器端的作用域,我們在applicati

反射判斷實體類的屬性是否null(附帶註解版本)

這個是用來驗證表單傳來的json物件裡是否必填,如果值為null或者“”時返回屬性的名字 程式碼 /** * java反射機制判斷物件所有屬性是否全部為空 * @param obj * @return 返回屬性

Integer型別0在Mapper.xml中被 條件過濾

0引起的風波 昨天寫了一個查詢功能,如下圖,“請選擇”value=“” ,“正常” value=“0” ,“禁用” value=“1” ,查詢的時候“正常”的結果與“請選擇“的查詢結果一樣,DEBUG看後臺的值的確是0,但是被Mybatis中if條件的 status !

mybatis使用map做實體對映問題獲取欄位null預設不對映解決

mybatis中使用map作為實體對映結果是最常見的方式,但是在預設情況下查詢到的欄位值為null(僅僅是null,而不是空)時,map則不會對映該欄位和null值。通過修改mybatis-config.xml配置檔案來解決null值欄位不對映問題。 1、在mybatis-config.xml檔

SpringMVC標籤補充從路徑中取、校正引數、設定預設

一、@PathVariable 從路徑中取值例如:@RequestMapping("/{url}") public String Muchpage(@PathVariable String url) { return url; }二、@RequestParam

Java過載函式引數null呼叫的處理

精確性原則 關於以下程式的輸出結果: public class TestNull { public void show(String a){ System.out.println("String"); } public void show(Object o)

TextBox屬性Readonly.net後端程式無法取的問題解決

另外有很多人也遇到這樣的類似的問題:在一個很多TextBox的頁面上,控制元件裡一開始就有值,這些值是用datareader讀出來為每個控制元件賦值,然而在我要更新資料庫的時候,用.Text來取TextBox控制元件裡面的值,卻取不到。難道是隻讀的?不管怎樣最後有一個方法,用Request.Form來取值就

技術團隊所有需求都是第一優先順序你該怎麼辦?

技術團隊做專案需求的工作過程中,經常會出現一些反覆不斷的問題,這些問題會嚴重影響團隊的工作效率,同時也會給團隊的士氣帶來重大的影響。接下來,我們來討論一下這些問題發生的具體場景,造成的問題原因,以及如何預防和解決這些問題方法技巧。 今天來看第一個常見的問題:當所有的需求或任務都是第一優先順序的時候,你該怎麼

字段NULL的like註意事項

問題 pre coalesce str ret lang int isnull 字段值 null like ‘%%‘是有問題的 mysql中應該這樣寫COALESCE($ZU.mobile,‘‘) like ‘%%‘ 或者 where IsNull([table].[col

數據庫字段nulljdbc獲取的

ref obj valid 答案 min test float thead 是否 當數據庫字段的值為NULL時,我們使用jdbc獲取到的值為什麽呢?對於varchar、char等類型當使用getString時,根據常識輕松地知道值應該是NULL。但是,對於int、float

Java的if判斷物件nullnull放在比較運算子的左邊還是右邊較好?

  如java中:if(name == null)和if(null == name)有什麼講究嗎?   答:在java裡面,它們是一樣的。但是通常寫為null == name。這其實是在C語言裡面引申出來的。   在C語言裡面,為了防止少敲一個等號,程式設計人員仍然能在編譯的時候找到錯誤。因為if(nam

HTML公用函式——日期空的時候設定預設

日期為空的時候,傳輸資料報錯,為日期設定預設值,傳輸資料到後臺  function ChangeNullDate(cellval) { if (cellval) { return cellval;

s中的字串“123456”則逆序輸出其奇數位置上的字元 “664422”。

程式設計將在字串s中下標為奇數位置上的字元,緊隨其後重複出現一次,放在一個新串t中,t中字元按原字串中字元出現的逆序排列(注意0為偶數)。 例如:當s中的字串為“123456”時,則t中的字串應為“664422”。 #include<stdio.h> #incl