第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么我這 1=1 后面獲取不了sql語句了呢?

public?class?Test?{

????public?static?void?main(String[]?args)?throws?Exception?{
????????Filter?f1?=?new?Filter();
????????f1.setId(3);//查詢id為3的客戶

????????Filter?f2?=?new?Filter();
????????f2.setEmail("123@qq.com,?888@163.com,?456@126.com");//查詢郵箱任一的客戶

????????Filter?f3?=?new?Filter();
????????f3.setMobile("18798765432");//查詢電話為

????????Test?t?=?new?Test();
????????String?sql1?=?t.query(f1);
????????String?sql2?=?t.query(f2);
????????String?sql3?=?t.query(f3);

????????System.out.println(sql1);
????????System.out.println(sql2);
????????System.out.println(sql3);
????}


????public?String?query(Filter?filter)?throws?Exception?{
????????//1、拿到類的實例
????????Class?c?=?filter.getClass();
????????boolean?b?=?c.isAnnotationPresent(Table.class);
????????if?(!b){
????????????return?null;
????????}
????????StringBuilder?sb?=?new?StringBuilder();
????????//2、獲取注解的實例
????????Table?t?=?(Table)c.getAnnotation(Table.class);
????????sb.append("?select?*?from?").append(t.value()).append("?where?1=1?");
????????//3、遍歷所有的字段
????????Field[]?fArrays?=?c.getFields();
????????//4、開始處理每個字段
????????for?(int?i=0;i<fArrays.length;i++){
????????????//4.1?獲取到字段名
????????????boolean?fExist?=?fArrays[i].isAnnotationPresent(Column.class);
????????????if?(!fExist)
????????????????continue;
????????????String?fieldName?=?fArrays[i].getName();
????????????Column?column?=?fArrays[i].getAnnotation(Column.class);
????????????String?cName?=?column.value();
????????????//4.2?拿到字段的值
????????????String?getMethodName?=?"get"+cName.substring(0,1).toUpperCase()+cName.substring(1);
????????????Method?getMethod?=?c.getMethod(getMethodName);
????????????Object?fieldValue?=?getMethod.invoke(getMethodName);
????????????//4.3?拼裝sql
????????????if(fieldValue==null||(fieldValue?instanceof?Integer?&&?(Integer)fieldValue==0))
????????????????continue;
????????????sb.append("?and?").append(fieldName);
????????????if?(fieldValue?instanceof?String)?{
????????????????if(((String)?fieldValue).contains(",")){
????????????????????String[]?fv?=?((String)?fieldValue).split(",");
????????????????????sb.append("?in(?");
????????????????????for?(String?f?:?fv){
????????????????????????sb.append("'").append(f).append("',");
????????????????????}
????????????????????sb.deleteCharAt(fv.length-1);
????????????????????sb.append(")");
????????????????}else
????????????????????sb.append("?=?").append("'").append(fieldValue).append("'");
????????????}?else
????????????????sb.append("?=?").append(fieldValue);
????????}
????????return?sb.toString();
????}
}
@Table("filter")
public?class?Filter?{
????@Column("id")
????private?int?id;
????@Column("u_uname")
????private?String?userName;
????@Column("u_nname")
????private?String?nickName;
????@Column("u_age")
????private?int?age;
????@Column("u_city")
????private?String?city;
????@Column("u_email")
????private?String?email;
????@Column("u_mobile")
????private?String?mobile;

????public?int?getId()?{
????????return?id;
????}

????public?void?setId(int?id)?{
????????this.id?=?id;
????}

????public?String?getUserName()?{
????????return?userName;
????}

????public?void?setUserName(String?userName)?{
????????this.userName?=?userName;
????}

????public?String?getNickName()?{
????????return?nickName;
????}

????public?void?setNickName(String?nickName)?{
????????this.nickName?=?nickName;
????}

????public?int?getAge()?{
????????return?age;
????}

????public?void?setAge(int?age)?{
????????this.age?=?age;
????}

????public?String?getCity()?{
????????return?city;
????}

????public?void?setCity(String?city)?{
????????this.city?=?city;
????}

????public?String?getEmail()?{
????????return?email;
????}

????public?void?setEmail(String?email)?{
????????this.email?=?email;
????}

????public?String?getMobile()?{
????????return?mobile;
????}

????public?void?setMobile(String?mobile)?{
????????this.mobile?=?mobile;
????}
}


正在回答

2 回答

你的47行? 得到 column.value(); 之后, 你看看你的filter類中, 字段注解全部是 u_****什么的,你用這個字符串。首字母大寫,然后去調用get方法,你肯定什么都得不到啊。

0 回復 有任何疑惑可以回復我~

第36行 的 方法錯了c.getFields()? 應該是? getDeclaredFields();

1 回復 有任何疑惑可以回復我~
#1

moummm 提問者

Exception in thread "main" java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 修改后報出了參數異常,這是怎么回事?
2017-09-27 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么我這 1=1 后面獲取不了sql語句了呢?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號