麻了一一一
2018-12-18 12:00
/**********************Filter*********************/ package com.fish.test; @Table("user") public class Filter { @Column("id") private int id; @Column("user_name") private String userName; @Column("nick_name") private String nickName; @Column("age") private int age; @Column("city") private String city; @Column("email") private String email; @Column("mobile") private String mobile; public Filter() { } 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; } } /*********************Test**********************/ package com.fish.test; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Test { public static void main(String[] args) { Filter f1 = new Filter(); f1.setId(10);//查询id为10的用户 Filter f2 = new Filter(); f2.setUserName("Lucy");//模糊查询用户名为Lucy的用户 Filter f3 = new Filter(); f3.setEmail("liu@sina.com, zh@163.com, xie@qq.com");//查询为其中任意一个的用户 String sql1 = query(f1); String sql2 = query(f2); String sql3 = query(f3); System.out.println(sql1); System.out.println(sql2); System.out.println(sql3); } private static String query(Filter f) { StringBuilder sb = new StringBuilder(); //1、获取到class Class c = f.getClass(); //2、获取到table的名字 boolean exists = c.isAnnotationPresent(Table.class); if (!exists) { return null; } Table t = (Table)c.getAnnotation(Table.class); String tableName = t.value(); sb.append("select*from").append(tableName).append("where 1=1"); //3.遍历所有的字段 Field[] fArray = c.getDeclaredFields(); for (Field field : fArray) { //4.处理每个字段对应的值 //4.1获取字段的名 boolean fExists = field.isAnnotationPresent(Column.class); if(!fExists) { continue; } Column column = field.getAnnotation(Column.class); String columnName = column.value(); //4.2、拿到字段的值 String fieldName = field.getName(); String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); Object fieldValue = null; try { Method getMethod = c.getMethod(getMethodName); fieldValue = (String) getMethod.invoke(f); } catch (Exception e) { e.printStackTrace(); } //4.3、拼装SQL sb.append("and").append(fieldName).append("=").append(fieldValue); } return sb.toString(); } }
下面是我debug信息,找了好久都找不出来,哪位同学帮我看看啊,不胜感激
猜测是你@Column注解的
@Retention(RetentionPolicy.RUNTIME)
设置错了
全面解析Java注解
127204 学习 · 111 问题
相似问题