国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

JAVA注解的實際應用--生成sql語句

2019-11-08 00:50:13
字體:
來源:轉載
供稿:網友

what: 該程序實現了sql查詢語句的生成(數據的持久化層)

1)UaerBean(存儲的數據)

@Table("user")public class UserBean { @Column("name") PRivate String name; @Column("age") private int age; @Column("email") private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}

2)produce_sql類實現查詢,生成sql語句

public class produce_sql { public static void main(String[] args) { UserBean user1 = new UserBean(); user1.setName("tom"); //查詢name==tom UserBean user2 = new UserBean(); user2.setAge(20); //查詢age==20 UserBean user3 = new UserBean(); user3.setEmail("tom@126.com"); //查詢email=="tom@126.com" UserBean user4 = new UserBean(); //查詢全部 String sql1 = query(user1); String sql2 = query(user2); String sql3 = query(user3); String sql4 = query(user4); System.out.println(sql1); System.out.println(sql2); System.out.println(sql3); System.out.println(sql4); } public static String query(UserBean user) { String src = ""; //注解的解析1.使用類加載器加載類 Class c = user.getClass(); //2找到注解 boolean isExist = c.isAnnotationPresent(Table.class); if(!isExist) { return null; } //3拿到注解實例 Table table = (Table)c.getAnnotation(Table.class); String tableName = table.value(); src += "select * from " + tableName + " where 1=1"; Field[] fields = c.getDeclaredFields(); for (Field field : fields) { boolean isFExist = field.isAnnotationPresent(Column.class); if(!isFExist) { continue; } Column column = field.getAnnotation(Column.class); String columnName = column.value(); String fieldName = field.getName(); String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); Object fieldValue = ""; try { Method method = c.getMethod(getMethodName); //通過get方法獲取字段的值,此處需要使用反射,因為注解在運行時加載 fieldValue = method.invoke(user); } catch (Exception e) { e.printStackTrace(); } if(fieldValue == null || fieldValue instanceof Integer && (Integer)fieldValue == 0) { continue; } if(fieldValue instanceof String) { src += " and " + columnName + "= /'" + fieldValue + "/'"; } else{ src += " and " + columnName + "=" +fieldValue; } } return src; }}

3)運行結果 這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沧州市| 芜湖县| 贵州省| 得荣县| 沧州市| 贵港市| 甘泉县| 辰溪县| 新绛县| 夏津县| 元阳县| 嘉定区| 海淀区| 双柏县| 佛山市| 光泽县| 延寿县| 天镇县| 抚顺县| 广饶县| 海林市| 渭源县| 平昌县| 临海市| 昭觉县| 牡丹江市| 汨罗市| 灵石县| 赣州市| 化州市| 剑河县| 桦甸市| 深州市| 焉耆| 临颍县| 汕尾市| 郧西县| 略阳县| 杂多县| 禹城市| 隆林|