数据表多字段时数据插入的总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/spring_model/article/details/53309794

在开发中我们需要经常使用SQL语句执行数据插入,最常出现的情况是数据表字段不多的时候,那个时候写写sql语句似乎很简单,但是有一天你会发现,你有个数据表,数据表字段有几百个,如果必须使用insert into TB_Table ('字段一','字段二','字段三',....) values(?,?,?,.....);来完成数据的插入,那么这样的sql语句难度不大,但是特别繁琐,那么有什么办法可以解决呢?

直接贴代码。。。。。。。。。。。。。。。。。。

        /**
	 * 保存数据<br>
	 * 
	 * @param tableName 表名
	 * @param data 要保存的数据
	 * @return 返回保存结果。
	 */
	public int insert(String tableName, Map<String, String> data) {
		StringBuilder sql = new StringBuilder(500);
		sql.append("select * from ").append(tableName);
		SqlRowSet srs = this.getJdbcTemplate().queryForRowSet(sql.toString());
		SqlRowSetMetaData srsmd = srs.getMetaData();
		int columnCount = srsmd.getColumnCount();
		
		StringBuilder fields = new StringBuilder(500);
		StringBuilder values = new StringBuilder(500);
		Object[] params = new Object[columnCount];
		for (int i = 1; i <= columnCount; i++) {
			String columnName = srsmd.getColumnName(i);
			String columnValue = StringUtil.formatNullString(data.get(columnName));
			
			if (i != columnCount) {
				fields.append(columnName).append(",");
				values.append("?,");
			} else {
				fields.append(columnName);
				values.append("?");
			}
			params[i - 1] = columnValue;
		}
		
		if (columnCount > 0) {
			sql = new StringBuilder(500);
			sql.append("insert into ").append(tableName).append(" (").append(fields).append(")");
			sql.append(" values (").append(values).append(")");
			return this.update(sql.toString(), params);
		} else {
			return 0;
		}
	}

这是今天的总结,虽然不是那么牛,也许效率不高,但是解决了大量手工输入的问题。

阅读更多

没有更多推荐了,返回首页