datax 拼裝json-java方式

package kafkaMQ;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
 * datax 拼裝模板
 * @author 15011
 *
 */
public class ExampleTest {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
//		String dbName = "user_system";
//		List<Object> tables = getTables(dbName, getConn());
		String tableName= "t_user";
		List<Object> column = getColumn(tableName, getConn());
		JSONObject wp = parseFile(false);
		List<Map> list = new ArrayList<>();
		column.forEach(o->{
			Map map = (Map)o;
			Object columnName = map.get("COLUMN_NAME");
			Object dataType = map.get("DATA_TYPE");
			Map<Object, Object> temp = new HashMap<>();
			temp.put("value", columnName);
			temp.put("type", dataType);
			list.add(temp);
		});
		wp.put("column", list);
		generateFile("测试.json", wp);
		System.out.println("文件生成成功!");
	}
	
	@SuppressWarnings("resource")
	public static void generateFile(String fileName, JSONObject obj) {
		File file = new File("D:\\eclipse-workspace\\kafkaMQ\\"+fileName);
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(file);
			byte[] bytes = obj.toJSONString().getBytes();
			fos.write(bytes);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fos.close();
			} catch (IOException e) { }
		}
	}
	
	public static JSONObject parseFile(boolean isReader) {
		JSONObject[] container = new JSONObject[2];
		File file = new File("D:\\eclipse-workspace\\kafkaMQ\\job.json");
		BufferedReader br = null;
		InputStreamReader isr = null;
		try {
			isr = new InputStreamReader(new FileInputStream(file));
			br = new BufferedReader(isr);
			String data = null;
			StringBuilder builder = new StringBuilder();
			while ((data = br.readLine()) != null) {
				builder.append(data);
			}
			data = builder.toString();
			JSONObject parseObject = JSON.parseObject(data);
			JSONObject jsonObject = parseObject.getJSONObject("job");
			JSONArray content = jsonObject.getJSONArray("content");
			JSONObject contents = content.getJSONObject(0);
			JSONObject r = contents.getJSONObject("reader");
			JSONObject w = contents.getJSONObject("writer");
			JSONObject rp = r.getJSONObject("parameter");
			JSONObject wp = w.getJSONObject("parameter");
			
			List<Object> arrayList = new ArrayList<>();
			Map<Object, Object> map = new HashMap<>();
			map.put("id", "string");
			map.put("name", "string");
			arrayList.add(map);
			wp.put("column", arrayList);
			if(isReader) 
				return rp;
			return wp;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				isr.close();
				br.close();
			} catch (IOException e) { }
		}
		return null;
	}
	
	public static Connection getConn() {
		String url = "jdbc:mysql://127.0.0.1:3306/mysql?serverTimezone=UTC&characterEncoding=UTF-8";
    	String account = "root";
    	String pwd = "root";
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
        } catch(ClassNotFoundException e){ try {
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("mysql连接失败,自动纠正"); } catch (ClassNotFoundException e1) {}
        }
		Connection con = null;
		try {
			con = DriverManager.getConnection(url,account,pwd);
			System.out.println("连接获取成功。。。");
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("连接失败-请检查url-account-pwd");
		}
		return con;
	}
	
	public static List<Object> getTables(String dbName, Connection connection) {
		
		String sql = "select table_name from information_schema.tables where table_schema='"+dbName+"'";
		return query(sql,connection);
	}
	public static List<Object> getColumn(String tableName, Connection connection) {
		String sql = "select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.COLUMNS where table_name = '"+tableName+"'";
		return query(sql,connection);
	}
	
	//调用它的方法如下:
		public static List<Object> query(String sql,Connection connection){
			List<Object> list = null;
			PreparedStatement pStatement = null;
			try {
				//3.准备SQL语句
				pStatement = connection.prepareStatement(sql);
				//4.执行SQL语句
				ResultSet rs = pStatement.executeQuery();
				//检索此 ResultSet对象的列的数量,类型和属性。
				ResultSetMetaData data = rs.getMetaData();
				//返回此 ResultSet对象中的列数。
				int column = data.getColumnCount();
				list = new ArrayList<>();
				//5.处理结果遍历要查询的数据
				
				while (rs.next()) {
					Map<String, Object> map = new HashMap<>();
					for(int i = 1;i<=column;i++) {
						String columnName = data.getColumnName(i);
						map.put(columnName, rs.getObject(i));
					}
					list.add(map);
				}
				rs.close();
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				//6.关闭连接
				try {
					pStatement.close();
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			return list;
		}
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值