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

本文介绍了一款实用工具,能够将数据库表结构自动转换为Java实体类,支持多种数据库类型如MySQL和SQL Server,以及不同的目标框架如JPA和Elasticsearch。此工具简化了数据库映射到对象的过程,提高了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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");
    }
}

复制即用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值