一.lang3包
//null ""
public static boolean isEmpty(CharSequence cs)
//null "" " "
public static boolean isBlank(CharSequence cs
//符串在另外一个字符串里,出现第Ordinal次的位置
public static int ordinalIndexOf(CharSequence str, CharSequence searchStr,int ordinal)
StringUtils.ordinalIndexOf("aabaabaa", "ab", 1) = 1
二.DbUtils包
//普通方式
String sql = "SELECT t.stationNo,b.station_name,b.latitude,b.longitude,t.pre, "
+ " b.region_id_two,b.basin_id,b.region_id FROM t_mete_climate_first_soaker t "
+ " JOIN t_mete_station b ON t.stationNo = b.device_id WHERE "
+ " b.region_id_two IN ('1', '2', '3') " + " AND t.event_year = '" + date + "'";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Map<String, Object> obj = new HashMap<>();
obj.put("stationNo", rs.getObject(1));
obj.put("station_name", rs.getObject(2));
obj.put("latitude", rs.getObject(3));
obj.put("longitude", rs.getObject(4));
obj.put("value", rs.getObject(5));
obj.put("region_id_two", rs.getObject(6));
obj.put("basin_id", rs.getObject(7));
obj.put("region_id", rs.getObject(8));
xyzs_param.add(obj);
}
------------------------
//dbutils
String sql = "SELECT t.stationNo,b.station_name as stationName,b.longitude as lon,b.latitude as lat,b.region_id,\n" +
"DATE_FORMAT(t.ObserverTime,'%Y-%m-%d') as observerTime,s.WEP_Name,s.WEP_Code\n" +
"FROM\n" +
"t_mete_ns_day_data t,t_mete_station b,t_mete_ns_day_wea s\n" +
"WHERE t.stationNo = b.device_id\n" +
"AND t.stationNo = s.stationNo AND t.ObserverTime = s.ObserverTime\n" +
"AND b.station_type = 1\n" +
"AND t.ObserverTime > '"+ObserverTime+"'";
QueryRunner queryRunner = new QueryRunner();
resultList = queryRunner.query(conn, sql, new BeanListHandler<>(AlarmThresholdsBean.class));
//批量插入和删除
/**
* 向表中插入数据
* @param tableName 表名称
* @param fieldAndVal 字段与值组成的map,其中键为字段值该字段对应的值
* @param conn 数据库连接
* @throws Exception 异常处理交由使用它的类
*/
public static void inserBatchtData2DB(String tableName,List<Map<String,Object>> list,Connection conn) throws Exception
{ Map<String,Object> fieldAndVal = list.get(0);
Object[][] params = new Object[list.size()][];
for (int i = 0; i < list.size(); i++) {
Object[] param= list.get(i).values().toArray();
params[i] = param;
}
String insertSql = "insert into "+tableName+"(";
//字段定义
for(Entry<String,Object> entry : fieldAndVal.entrySet()){
insertSql = insertSql + entry.getKey()+",";
}
insertSql = insertSql.substring(0, insertSql.length()-1)+") values(";
//字段赋 "?"
for(Entry<String,Object> entry : fieldAndVal.entrySet()){
insertSql = insertSql +"?,";
}
insertSql = insertSql.substring(0, insertSql.length()-1)+")";
AsyncQueryRunner queryRunner = new AsyncQueryRunner(Executors.newCachedThreadPool());
@SuppressWarnings("unused")
Future<List<Map<String, Object>>> insert = queryRunner.insertBatch(conn, insertSql, new MapListHandler(), params);
System.out.println("数据插入成功");
}
https://blog.csdn.net/u013510614/article/details/50481000