diff --git a/panda-beans/src/main/java/org/panda/beans/util/BeanUtil.java b/panda-beans/src/main/java/org/panda/beans/util/BeanUtil.java index c972353..d673f12 100644 --- a/panda-beans/src/main/java/org/panda/beans/util/BeanUtil.java +++ b/panda-beans/src/main/java/org/panda/beans/util/BeanUtil.java @@ -49,6 +49,33 @@ public class BeanUtil { return clazz.getDeclaredFields(); } + /** + * 获取类属性,包括父类属性 + * @param clazz + */ + public static List getAllMethods(Class clazz){ + final List methodList = new ArrayList<>(); + Class currentClass = clazz; + while (currentClass!=null){ + Method[] methods = currentClass.getMethods(); + for (Method method:methods){ + methodList.add(method); + } + currentClass = currentClass.getSuperclass(); + } + return methodList; + } + + /** + * 获取类方法 + * @param clazz + * @return + */ + public static Method[] getMethods(Class clazz){ + + return clazz.getMethods(); + } + /** * 获取上一级父类的属性 * @param clazz diff --git a/panda-code/src/main/java/org/panda/code/uitl/ReflectionUtil.java b/panda-code/src/main/java/org/panda/code/uitl/ReflectionUtil.java index 5b5c2d0..4b5e0bb 100644 --- a/panda-code/src/main/java/org/panda/code/uitl/ReflectionUtil.java +++ b/panda-code/src/main/java/org/panda/code/uitl/ReflectionUtil.java @@ -37,10 +37,13 @@ public class ReflectionUtil { /** * 调用方法 + * @param obj 调用对象 + * @param method 调用方法 + * @param args 参数 + * @return */ public static Object invokeMethod(Object obj, Method method,Object... args){ Object result = null; - try { method.setAccessible(true); result = method.invoke(obj,args); @@ -49,7 +52,6 @@ public class ReflectionUtil { } catch (InvocationTargetException e) { e.printStackTrace(); } - return result; } diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/BeanHander.java b/panda-jdbc/src/main/java/org/panda/jdbc/BeanHander.java index 507bcc7..024e0be 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/BeanHander.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/BeanHander.java @@ -5,6 +5,7 @@ import org.panda.code.uitl.ReflectionUtil; import org.panda.jdbc.sql.BeanSqlUtil; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; @@ -27,6 +28,7 @@ public class BeanHander implements ResultSetHandler { try { Object bean = BeanUtil.instantiateClass(clazz); List fieldList = BeanUtil.getAllField(clazz); + List methodList =BeanUtil.getAllMethods(clazz); for (Field f:fieldList){ String fieldName = f.getName(); String columnName = BeanSqlUtil.caseToHump(fieldName); diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/annotation/Table.java b/panda-jdbc/src/main/java/org/panda/jdbc/annotation/Table.java index 6214165..e4e1261 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/annotation/Table.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/annotation/Table.java @@ -23,4 +23,10 @@ public @interface Table { * @return */ String charset() default "utf-8"; + + /** + * 表名 + * @return + */ + String name(); } diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/sql/BeanSqlUtil.java b/panda-jdbc/src/main/java/org/panda/jdbc/sql/BeanSqlUtil.java index 1b11937..308e5fb 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/sql/BeanSqlUtil.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/sql/BeanSqlUtil.java @@ -2,6 +2,7 @@ package org.panda.jdbc.sql; import org.panda.beans.util.BeanUtil; +import org.panda.jdbc.annotation.Table; import java.lang.reflect.Field; import java.util.HashMap; @@ -62,10 +63,17 @@ public class BeanSqlUtil { * @return */ public static String beanNameToTableName(Class entityClazz){ - //类名 - String entityName = BeanUtil.getEntityName(entityClazz); - //驼峰转换 - String tableName = caseToHump(entityName); + String tableName = null; + Table table = (Table) entityClazz.getAnnotation(Table.class); + if (table==null) { + //类名 + String entityName = BeanUtil.getEntityName(entityClazz); + //驼峰转换 + tableName = caseToHump(entityName); + }else { + + tableName = table.name(); + } return tableName; }