美文网首页
测试工具-JdbcUtil

测试工具-JdbcUtil

作者: jinhm007 | 来源:发表于2019-01-20 23:58 被阅读0次

/*** @ClassName: JdbcUtil

* @Description: 封装测试常用的数据库操作**/

public class JdbcUtil {

private static final Loglog = LogFactory.getLog(JdbcUtil.class);

  /**

* 向指定表中插入数据

*

    * @param jdbcTemplate

    *            包含数据源信息的NamedParameterJdbcTemplate

    * @param tableName

    * @param columnNameValuePairs

    */

  public static int insertData(NamedParameterJdbcTemplate jdbcTemplate,

        String tableName, Map columnNameValuePairs) {

Assert.notNull(jdbcTemplate, "jdbcTemplate must not be null");

      Assert.notNull(tableName, "tableName must not be null");

      Assert.notEmpty(columnNameValuePairs,

            "columnNameValuePairs must not be empty");

      StringBuffer preSql =new StringBuffer("INSERT INTO " + tableName+"(");

      StringBuffer afterSql =new StringBuffer(" VALUES(");

      StringBuffer afterSqlToLog =new StringBuffer(" VALUES(");

      Set columnNames = columnNameValuePairs.keySet();

      for (String columnName : columnNames) {

preSql.append(columnName+",");

        afterSql.append(":"+columnName+",");

        afterSqlToLog.append(columnNameValuePairs.get(columnName)+",");

      }

preSql.deleteCharAt(preSql.toString().length()-1).append(") ");

      afterSql.deleteCharAt(afterSql.toString().length()-1).append(")");

      afterSqlToLog.deleteCharAt(afterSqlToLog.toString().length()-1).append(")");

      //待执行的sql

      String sql = preSql.toString()+afterSql.toString();

      String sqlToLog = preSql.toString()+afterSqlToLog.toString();

      log.info(sqlToLog);

      return jdbcTemplate.update(sql,columnNameValuePairs);

  }

/**

* 根据id删除表(表必须有id这个字段)中数据

*

    * @param jdbcTemplate

    *            包含数据源信息的NamedParameterJdbcTemplate

    * @param tableName

    * @param id

    */

  public static int deleteDataById(NamedParameterJdbcTemplate jdbcTemplate,

        String tableName, Object idValue) {

Map columnNameValuePairs =new HashMap();

      columnNameValuePairs.put("id", idValue);

      return deleteData(jdbcTemplate, tableName, columnNameValuePairs);

  }

/**

* 根据主键删除表中数据

*

    * @param jdbcTemplate

    *            包含数据源信息的NamedParameterJdbcTemplate

    * @param tableName

    *            表名

    * @param primaryKeyName

    *            主键字段名

    * @param primaryKeyValue

    */

  public static int deleteDataByPrimaryKey(NamedParameterJdbcTemplate jdbcTemplate,

        String tableName, String primaryKeyName, Object primaryKeyValue) {

Map columnNameValuePairs =new HashMap();

      columnNameValuePairs.put(primaryKeyName, primaryKeyValue);

      return deleteData(jdbcTemplate, tableName, columnNameValuePairs);

  }

/**

* 根据数据库表字段名称和值删除

*

    * @param jdbcTemplate

    * @param tableName

    * @param columnNameValuePairs

    * @return

    */

  public static int deleteData(NamedParameterJdbcTemplate jdbcTemplate,

        String tableName, Map columnNameValuePairs) {

Assert.notNull(jdbcTemplate, "jdbcTemplate must not be null");

      Assert.notNull(tableName, "tableName must not be null");

      Assert.notEmpty(columnNameValuePairs,

            "columnNameValuePairs must not be empty");

      StringBuffer sql =new StringBuffer("DELETE FROM " + tableName

+" WHERE 1=1 ");

      StringBuffer sqlToLog =new StringBuffer(sql);

      Set columnNames = columnNameValuePairs.keySet();

      for (String columnName : columnNames) {

sql.append(" AND " + columnName +"=:" + columnName);

        sqlToLog.append(" AND " + columnName +"='"

              + columnNameValuePairs.get(columnName) +"'");

      }

log.info(sqlToLog);

      return jdbcTemplate.update(sql.toString(), columnNameValuePairs);

  }

/**

* 根据主键查询表(表必须有id这个字段)中数据

*

    * @param jdbcTemplate

    *            包含数据源信息的NamedParameterJdbcTemplate

    * @param tableName

    *            表名

    * @param idValue

    *            id值

    * @return

    */

  public static List>queryDataById(

NamedParameterJdbcTemplate jdbcTemplate, String tableName, Object idValue) {

Map columnNameValuePairs =new HashMap();

      columnNameValuePairs.put("id", idValue);

      return queryData(jdbcTemplate, tableName, columnNameValuePairs);

  }

/**

* 根据主键查询表中数据

*

    * @param jdbcTemplate

    *            包含数据源信息的NamedParameterJdbcTemplate

    * @param tableName

    *            表名

    * @param primaryKeyName

    *            主键字段名

    * @param primaryKeyValue

    *            主键值

    * @return

    */

  public static List>queryDataByPrimaryKey(

NamedParameterJdbcTemplate jdbcTemplate, String tableName,

        String primaryKeyName, Object primaryKeyValue) {

Assert.notNull(jdbcTemplate, "jdbcTemplate must not be null");

      Assert.notNull(tableName, "tableName must not be null");

      Assert.notNull(primaryKeyName, "primaryKeyName must not be null");

      Map columnNameValuePairs =new HashMap();

      columnNameValuePairs.put(primaryKeyName, primaryKeyValue);

      return queryData(jdbcTemplate, tableName, columnNameValuePairs);

  }

/**

* 根据数据库表字段名称和值查询

*

    * @param jdbcTemplate

    * @param tableName

    * @param columnNameValuePairs

    * @return

    */

  public static List>queryData(

NamedParameterJdbcTemplate jdbcTemplate, String tableName,

        Map columnNameValuePairs) {

Assert.notNull(jdbcTemplate, "jdbcTemplate must not be null");

      Assert.notNull(tableName, "tableName must not be null");

      Assert.notEmpty(columnNameValuePairs,

            "columnNameValuePairs must not be empty");

      StringBuffer sql =new StringBuffer("SELECT * FROM " + tableName

+" WHERE 1=1 ");

      StringBuffer sqlToLog =new StringBuffer(sql);

      Set columnNames = columnNameValuePairs.keySet();

      for (String columnName : columnNames) {

sql.append(" AND " + columnName +"=:" + columnName);

        sqlToLog.append(" AND " + columnName +"='"

              + columnNameValuePairs.get(columnName) +"'");

      }

log.info(sqlToLog);

      return jdbcTemplate.queryForList(sql.toString(), columnNameValuePairs);

  }

/**

* 根据主键判断表(表必须有id这个字段)中是否存在数据

*

    * @param jdbcTemplate

    * @param tableName

    * @param idValue

    * @return

    */

  public static boolean isExistsInDb(NamedParameterJdbcTemplate jdbcTemplate,

        String tableName, Object idValue) {

return queryDataById(jdbcTemplate, tableName, idValue).size() >0;

  }

/**

* 根据主键判断表中是否存在数据

*

    * @param jdbcTemplate

    * @param tableName

    * @param primaryKeyName

    * @param primaryKeyValue

    * @return

    */

  public static boolean isExistsInDb(NamedParameterJdbcTemplate jdbcTemplate,

        String tableName, String primaryKeyName,Object primaryKeyValue) {

return queryDataByPrimaryKey(jdbcTemplate, tableName, primaryKeyName,

            primaryKeyValue).size() >0;

  }

/**

*

    * @param jdbcTemplate

    * @param tableName

    * @param columnNameValuePairs

    * @return

    */

  public static boolean isExistsInDb(NamedParameterJdbcTemplate jdbcTemplate,

        String tableName, Map columnNameValuePairs) {

return queryData(jdbcTemplate, tableName, columnNameValuePairs).size() >0;

  }

/**

* 组装Oracle分页查询语句

*

    * @param sql

    *            原始sql

    * @param start

    *            起始行

    * @param max

    *            最大记录数

    * @return

    */

  public static StringgetPagingSqlForOracle(String sql, int start, int max) {

StringBuffer pagingSelect =new StringBuffer();

      pagingSelect

.append("SELECT * FROM (SELECT row_.*,rownum rownum_ FROM( ");

      pagingSelect.append(sql);

      pagingSelect.append(" ) row_ WHERE rownum <= " + (start + max)

+") WHERE rownum_ > " + start);

      return pagingSelect.toString();

  }

}

相关文章

网友评论

      本文标题:测试工具-JdbcUtil

      本文链接:https://www.haomeiwen.com/subject/xvqqjqtx.html