实现ORM框架映射
package com.learn;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** * @classDesc: 功能描述:(自定義表映射注解 )*/
@Target(value = { ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface SetTable {/*** * @methodDesc: 功能描述:(對應數據庫表名稱)*/String value();}
package com.learn;import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;/*** * @classDesc: 功能描述:(定義字段屬性)* */
@Retention(RetentionPolicy.RUNTIME)
public @interface SetProperty {/*** * @methodDesc: 功能描述:(字段名稱)*/String name();/*** * @methodDesc: 功能描述:(長度)*/int len();}
package com.learn;@SetTable("user_table")
public class UserEntity {@SetProperty(name = "user_name", len = 10)private String userName;@SetProperty(name = "user_age", len = 10)private Integer userAge;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public Integer getUserAge() {return userAge;}public void setUserAge(Integer userAge) {this.userAge = userAge;}}
package com.learn;import java.lang.reflect.Field;public class Test001 {public static void main(String[] args) throws ClassNotFoundException {// 反射Class<?> forName = Class.forName("com.learn.UserEntity");Field[] declaredFields = forName.getDeclaredFields();// 拼接sql語句StringBuffer sqlBuffer = new StringBuffer();sqlBuffer.append(" select ");for (int i = 0; i < declaredFields.length; i++) {// 獲取注解屬性SetProperty setProperty = declaredFields[i].getAnnotation(SetProperty.class);String property = setProperty.name();sqlBuffer.append(property);if (i == declaredFields.length - 1) {sqlBuffer.append(" from ");} else {sqlBuffer.append(" , ");}}// 獲取某個注解對象SetTable setTable = forName.getAnnotation(SetTable.class);// 表的名稱String tableName = setTable.value();sqlBuffer.append(" " + tableName);// 生成orm框架sql語句System.out.println(sqlBuffer.toString());}}
?
總結