Java实现MySql数据库表转化成Bean类

package cn.cnm.springboot.util;

import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.datasource.SimpleDriverDataSource;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class TableToBean {
    private String url="xxx";
    private String username="root";
    private String password="123456";
    private String db="mysql";
    private String way="jpa";
    public TableToBean(String url,String username,String password,String db,String way){
        this.url=url;
        this.username=username;
        this.password=password;
        this.db=db;
        this.way=way;
    }
    public TableToBean(){}
    private static final String[] ts={"tinyint","smallint","mediumint","int","bigint",
            "float","double","decimal","bit","bool"};

    private static String in(String type){
            if(type.contains("int") ||
                    type.equalsIgnoreCase("bit") ||
                    type.equalsIgnoreCase("bool"))
                return "Integer";
            else if(type.equalsIgnoreCase("float") ||
                    type.equalsIgnoreCase("double") ||
                    type.equalsIgnoreCase("decimal"))
                return "Double";
            else if(type.equalsIgnoreCase("datetime") ||
                    type.equalsIgnoreCase("datetime2"))
                return "Date";
            else
                return "String";
    }
    private void connect(String name,String bean,String index,String _type){
        StringBuffer sb=new StringBuffer();
        Connection conn = null;
		PreparedStatement pre = null;
        SimpleDriverDataSource dd=new SimpleDriverDataSource();
		try {
            String sql=null;
		    if("mysql".equalsIgnoreCase(db)) {
                sql = "select column_name,column_comment,data_type from INFORMATION_SCHEMA.Columns where table_name=?";
                dd.setDriverClass(com.mysql.jdbc.Driver.class);
            }
            else if("sqlserver".equalsIgnoreCase(db)) {
                sql = "select column_name,data_type from INFORMATION_SCHEMA.Columns where table_name=?";
                dd.setDriverClass(com.microsoft.sqlserver.jdbc.SQLServerDriver.class);
            }
            if("jpa".equalsIgnoreCase(way))
                sb.append("@Entity\n@Table(name=\""+name.toLowerCase()+"\")\n");
            else if("elasticsearch".equalsIgnoreCase(way))
                sb.append("@Document(indexName=\""+index+"\",type=\""+_type.toLowerCase()+"\")\n");
            sb.append("public class "+bean+"{");
			dd.setUrl(url);
			dd.setUsername(username);
			dd.setPassword(password);

			conn = dd.getConnection();
			conn.setAutoCommit(false);
			pre=conn.prepareStatement(sql);
			pre.setString(1, name);
			ResultSet rs=pre.executeQuery();
            while(rs.next()){
                if("mysql".equalsIgnoreCase(db)) {
                    if (!"".equals(rs.getString("column_comment")) &&
                            rs.getString("column_comment") != null) {
                        sb.append("\n\t//" + rs.getString("column_comment") + "");
                    }
                }
                if("jpa".equalsIgnoreCase(way))
                sb.append("\n\t@Column(name=\""+rs.getString("column_name")+"\")");

                sb.append("\n\tprivate ");
                String type=rs.getString("data_type");
                sb.append(in(type));
                String field=rs.getString("column_name").toLowerCase();
                char[] cs=field.toCharArray();
                for(int j=0;j<cs.length;j++){
                    if(cs[j]=='_'){
                        cs[j]=' ';
                        cs[j+1]=(cs[j+1]+"").toUpperCase().charAt(0);
                    }
                }

                sb.append(" "+String.valueOf(cs).replaceAll(" ","")+";");
            }
            sb.append("\n}");
            System.out.println(sb.toString());
            conn.commit();
            pre.close();
            conn.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
    }
    public static void main(String[] args){
        TableToBean tb=new TableToBean(
                "xxx",
                "DEV",
                "devsjit@123",
                "sqlserver",
                "elasticsearch"
        );
        tb.connect("srorders","Order","order_4","order");
    }
}

复制即用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以按照以下步骤实现: 1. 读取 csv 文件,可以使用 Java 自带的 BufferedReader 来读取文件。 2. 解析 csv 文件,将数据存储在一个二维数组中,可以使用 Java 自带的 String 的 split() 方法来分割每一行的数据。 3. 连接 MySQL 数据库,可以使用 JDBC(Java 数据库连接)来连接数据库。 4. 创建数据库,可以使用 SQL 语句来创建。 5. 将 csv 数据插入到数据库中,可以使用 SQL 语句来插入数据。 以下是一个示例代码: ```java import java.io.BufferedReader; import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class CsvToMysql { public static void main(String[] args) { String csvFile = "path/to/csv/file.csv"; String jdbcUrl = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = "password"; String tableName = "csv_table"; try { // Connect to MySQL database Connection conn = DriverManager.getConnection(jdbcUrl, username, password); Statement stmt = conn.createStatement(); // Read CSV file BufferedReader br = new BufferedReader(new FileReader(csvFile)); String line; String[] headers = null; String[][] data = new String[100][100]; int row = 0; while ((line = br.readLine()) != null) { String[] values = line.split(","); if (headers == null) { headers = values; } else { for (int i = 0; i < values.length; i++) { data[row][i] = values[i]; } row++; } } // Create table StringBuilder createTableSql = new StringBuilder(); createTableSql.append("CREATE TABLE " + tableName + " ("); for (int i = 0; i < headers.length; i++) { createTableSql.append(headers[i] + " VARCHAR(255),"); } createTableSql.replace(createTableSql.length() - 1, createTableSql.length(), ")"); stmt.executeUpdate(createTableSql.toString()); // Insert data for (int i = 0; i < row; i++) { StringBuilder insertSql = new StringBuilder(); insertSql.append("INSERT INTO " + tableName + " VALUES ("); for (int j = 0; j < headers.length; j++) { insertSql.append("'" + data[i][j] + "',"); } insertSql.replace(insertSql.length() - 1, insertSql.length(), ")"); stmt.executeUpdate(insertSql.toString()); } // Close resources br.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 注意:上述代码仅作为示例,实际应用中需考虑异常处理、数据转换等因素。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值