diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/JdbcUtils.java b/panda-jdbc/src/main/java/org/panda/jdbc/JdbcUtils.java index d844ebe..90d61b2 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/JdbcUtils.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/JdbcUtils.java @@ -190,19 +190,18 @@ public class JdbcUtils { } catch (SQLException e) { e.printStackTrace(); } finally { - release( st, rs); + release(conn, st, rs); } return rs; } /** - * 关闭数据库连接(废弃) - * 废弃原因:采用数据库连接池,不用关闭连接 + * 关闭数据库连接 * @param conn * @param st * @param rs */ - @Deprecated + public void release(Connection conn, Statement st, ResultSet rs) { if (rs != null) { try { diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/TableUtil.java b/panda-jdbc/src/main/java/org/panda/jdbc/TableUtil.java new file mode 100644 index 0000000..2497d99 --- /dev/null +++ b/panda-jdbc/src/main/java/org/panda/jdbc/TableUtil.java @@ -0,0 +1,61 @@ +package org.panda.jdbc; + +import org.panda.beans.util.BeanUtil; +import org.panda.jdbc.mode.Column; +import org.panda.jdbc.mode.Table; +import org.panda.jdbc.sql.BeanSqlUtil; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: qi + * @Description: + * @Date: Create in 8:44 AM 2019/11/2 + */ +public class TableUtil { + + /** + * class 对象转换成 tablle对象 + * @param clazz + * @return + */ + public Table beanToTable(Class clazz){ + Table table = new Table(); + String tableName = BeanSqlUtil.beanNameToTableName(clazz); + table.setTableName(tableName); + List fields = BeanUtil.getAllField(clazz); + List columnList = new ArrayList<>(); + fields.forEach(field -> { + Column column = fieldToColumn(field); + columnList.add(column); + }); + + table.setColumns(columnList); + + return table; + } + + /** + * 对象属性转换成 表列 + * @param field + * @return + */ + public Column fieldToColumn(Field field){ + Column column = new Column(); + if (field.isAnnotationPresent(org.panda.jdbc.annotation.Column.class)){ + org.panda.jdbc.annotation.Column annotationColumn = field.getAnnotation(org.panda.jdbc.annotation.Column.class); + + int length = annotationColumn.length(); + String defalutValue = annotationColumn.defaultValue(); + boolean isNull = annotationColumn.isNull(); + column.setColumnSize(length); + column.setColumnDef(defalutValue); + column.setColumnName(BeanSqlUtil.caseToHump(field.getName())); + column.setNull(isNull); + } + + return column; + } +} diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/helper/DataBaseHelper.java b/panda-jdbc/src/main/java/org/panda/jdbc/helper/DataBaseHelper.java index 52f5e2f..cbdd878 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/helper/DataBaseHelper.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/helper/DataBaseHelper.java @@ -6,7 +6,7 @@ import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.panda.beans.util.BeanUtil; -import org.panda.jdbc.sql.AbstractDbBuiler; +import org.panda.jdbc.sql.builder.AbstractDbBuiler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,11 +40,14 @@ public class DataBaseHelper { private static final String JDBC_PASSWORD; static { - JDBC_DRIVER = DbConfigHelper.getJdbcDriver(); - JDBC_URL = DbConfigHelper.getJdbcUrl(); - JDBC_USER = DbConfigHelper.getJdbcUser(); - JDBC_PASSWORD = DbConfigHelper.getJdbcPassword(); - +// JDBC_DRIVER = DbConfigHelper.getJdbcDriver(); +// JDBC_URL = DbConfigHelper.getJdbcUrl(); +// JDBC_USER = DbConfigHelper.getJdbcUser(); +// JDBC_PASSWORD = DbConfigHelper.getJdbcPassword(); + JDBC_DRIVER = null; + JDBC_URL = null; + JDBC_USER = null; + JDBC_PASSWORD = null; DATA_SOURCE = new BasicDataSource(); DATA_SOURCE.setDriverClassName(JDBC_DRIVER); DATA_SOURCE.setUrl(JDBC_URL); diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/helper/DbConfigHelper.java b/panda-jdbc/src/main/java/org/panda/jdbc/helper/DbConfigHelper.java index a559423..900d06e 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/helper/DbConfigHelper.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/helper/DbConfigHelper.java @@ -9,14 +9,15 @@ import java.util.Properties; * @author qi * 属性文件助手类 */ -public class DbConfigHelper { +public class DbConfigHelper implements DbConfigInterface { private static final Properties CONFIG_PROPS = PropsUtil.loadProps(DbConfigConstant.CONFIG_FILE); /** * 获取数据库驱动 */ - public static String getJdbcDriver() { + @Override + public String getJdbcDriver() { return PropsUtil.getString(CONFIG_PROPS, DbConfigConstant.JDBC_DRIVER); } @@ -26,7 +27,8 @@ public class DbConfigHelper { * * @return */ - public static String getJdbcUrl() { + @Override + public String getJdbcUrl() { return PropsUtil.getString(CONFIG_PROPS, DbConfigConstant.JDBC_URL); } @@ -36,7 +38,8 @@ public class DbConfigHelper { * * @return */ - public static String getJdbcUser() { + @Override + public String getJdbcUser() { return PropsUtil.getString(CONFIG_PROPS, DbConfigConstant.JDBC_USER); } @@ -44,7 +47,8 @@ public class DbConfigHelper { /** * 获取数据库密码 */ - public static String getJdbcPassword() { + @Override + public String getJdbcPassword() { return CONFIG_PROPS.getProperty(DbConfigConstant.JDBC_PASSWORD); } diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/mode/Column.java b/panda-jdbc/src/main/java/org/panda/jdbc/mode/Column.java index cfa2eb1..bb88f54 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/mode/Column.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/mode/Column.java @@ -50,6 +50,10 @@ public class Column { * 备注 */ private String remarks; + /** + * 是否允许为null defaultValue:true + */ + private Boolean isNull; public String getColumnName() { return columnName; @@ -83,13 +87,11 @@ public class Column { this.remarks = remarks; } - @Override - public String toString() { - return "Column{" + - "columnName='" + columnName + '\'' + - ", columnSize=" + columnSize + - ", columnDef='" + columnDef + '\'' + - ", remarks='" + remarks + '\'' + - '}'; + public Boolean getNull() { + return isNull; + } + + public void setNull(Boolean aNull) { + isNull = aNull; } } 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 56cd810..b1044e7 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 @@ -15,6 +15,9 @@ import java.util.Map; */ public class BeanSqlUtil { + /** + * 驼峰下滑线 + */ public static final String SQL_CHARACTER = "_"; /** diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/sql/builder/MysqlBuilder.java b/panda-jdbc/src/main/java/org/panda/jdbc/sql/builder/MysqlBuilder.java index 3b5a391..0fdbe96 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/sql/builder/MysqlBuilder.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/sql/builder/MysqlBuilder.java @@ -84,6 +84,7 @@ public class MysqlBuilder extends AbstractDbBuiler { } }); } + //创建表 map.forEach((key,value)->{ sql.append(createTableStr(value)); }); diff --git a/panda-jdbc/src/main/java/org/panda/jdbc/sql/factory/impl/DefaultDbBuilerFactory.java b/panda-jdbc/src/main/java/org/panda/jdbc/sql/factory/impl/DefaultDbBuilerFactory.java index 0d6f507..c276755 100644 --- a/panda-jdbc/src/main/java/org/panda/jdbc/sql/factory/impl/DefaultDbBuilerFactory.java +++ b/panda-jdbc/src/main/java/org/panda/jdbc/sql/factory/impl/DefaultDbBuilerFactory.java @@ -17,8 +17,7 @@ public class DefaultDbBuilerFactory implements DbBuilerFactory { public AbstractDbBuiler getSqlBuilder(String dbType) { AbstractDbBuiler abstractDbBuiler = null; switch (dbType){ - case SqlConstant - .DB_TYPE_MYSQL: + case SqlConstant.DB_TYPE_MYSQL: abstractDbBuiler = new MysqlBuilder(); break; case SqlConstant.DB_TYPE_ORACLE: diff --git a/panda-jdbc/src/test/java/org/panda/entity/SysUser.java b/panda-jdbc/src/test/java/org/panda/entity/SysUser.java index 082172a..5cc6205 100644 --- a/panda-jdbc/src/test/java/org/panda/entity/SysUser.java +++ b/panda-jdbc/src/test/java/org/panda/entity/SysUser.java @@ -1,5 +1,6 @@ package org.panda.entity; +import org.panda.jdbc.annotation.Column; import org.panda.jdbc.annotation.Table; import java.util.Date; @@ -9,6 +10,7 @@ public class SysUser { private Long id; + @Column(defaultValue = "qi",length = 120,isNull = false) private String name; private Date createTime; diff --git a/panda-jdbc/src/test/java/org/panda/jdbc/JdbcUtilsTest.java b/panda-jdbc/src/test/java/org/panda/jdbc/JdbcUtilsTest.java index 7ee9a18..f6a1361 100644 --- a/panda-jdbc/src/test/java/org/panda/jdbc/JdbcUtilsTest.java +++ b/panda-jdbc/src/test/java/org/panda/jdbc/JdbcUtilsTest.java @@ -2,13 +2,13 @@ package org.panda.jdbc; import org.junit.Test; import org.panda.entity.SysUser; -import org.panda.jdbc.annotation.Table; -import org.panda.jdbc.sql.AbstractDbBuiler; +import org.panda.jdbc.annotation.Column; +import org.panda.jdbc.sql.builder.AbstractDbBuiler; import org.panda.jdbc.sql.SqlConstant; import org.panda.jdbc.sql.factory.DbBuilerFactory; import org.panda.jdbc.sql.factory.impl.DefaultDbBuilerFactory; -import static org.junit.Assert.*; +import java.lang.reflect.Field; public class JdbcUtilsTest { @@ -38,6 +38,14 @@ public class JdbcUtilsTest { Class clzz = SysUser.class; + Field[] fields = clzz.getDeclaredFields(); + for (Field field1:fields){ + if (field1.isAnnotationPresent(Column.class)){ + Column column = field1.getAnnotation(Column.class); + System.out.println(column); + } + // System.out.println(column.length()); + } DbBuilerFactory dbBuilerFactory = new DefaultDbBuilerFactory(); AbstractDbBuiler abstractDbBuiler = dbBuilerFactory.getSqlBuilder(SqlConstant.DB_TYPE_MYSQL);