MySQL实体类框架

实现mysql数据库的增删改查功能


import com.mchange.v2.collection.MapEntry;
import lombok.Data;
import org.junit.jupiter.api.Test;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.*;
import java.sql.*;
import java.util.*;/*** 自定义框架* 生成mysql表对应的实体类*/
public class MySqlMapper {/*** 配制参数*/static class Config {//mysql地址,数据库,用户名,密码final static private String address = "127.0.0.1:3306";final static private String dbName = "creative";final static private String username = "root";final static private String password = "123456";//模型保存的位置final static private String modelPath = "C:\\Users\\admin\\IdeaProjects\\mytest1\\src\\main\\java\\com\\libii\\model";//mysql数据类型与java数据类型转换final static MapEntry[] map = {new MapEntry("INT", "Integer"),new MapEntry("VARCHAR", "String"),new MapEntry("TIMESTAMP", "String"),new MapEntry("DOUBLE", "Double")};}/*** 内存参数*/static class Variable {final static private String packagePath = Config.modelPath.split("java\\\\")[1].replace("\\", ".");static private Map<String, String> mapper = new HashMap<>();static {for (MapEntry mapEntry : Config.map) {mapper.put(String.valueOf(mapEntry.getKey()), String.valueOf(mapEntry.getValue()));}}}/*** 获取连接** @return* @throws SQLException* @throws ClassNotFoundException*/public static Connection getConn() throws SQLException, ClassNotFoundException {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://" + Config.address + "/" + Config.dbName + "?useUnicode=true&amp;characterEncoding=UTF-8";Connection conn = DriverManager.getConnection(url, Config.username, Config.password);return conn;}public static void main(String[] args) throws Exception {Connection conn = getConn();List<ModelTable> modelTableList = Business.getModelTable(conn);//获取数据库下的表结构conn.close();Business.foreach(modelTableList);//遍历结构数据}static class Business {//业务类/*** 获取数据库中表与字段的集合** @param conn* @return*/public static List<ModelTable> getModelTable(Connection conn) throws Exception {List<ModelTable> modelTableList = new LinkedList<>();Map<String, String> tableMsg = Business.getTableNameList(conn);for (Map.Entry<String, String> line : tableMsg.entrySet()) {ModelTable tableFieldMap = getTableFieldMap(conn, line);modelTableList.add(tableFieldMap);}return modelTableList;}/*** 获取表名称** @param conn* @return* @throws Exception*/public static Map<String, String> getTableNameList(Connection conn) throws Exception {String sql = "select TABLE_NAME,TABLE_COMMENT from information_schema.tables where table_schema=\"" + Config.dbName + "\"";List<Map<String, Object>> tableMap = Util.select(sql, conn);Map<String, String> tableMsg = new HashMap<>();for (Map<String, Object> line : tableMap) {String tableName = String.valueOf(line.get("TABLE_NAME"));String tableComment = String.valueOf(line.get("TABLE_COMMENT"));tableMsg.put(tableName, tableComment);}return tableMsg;}/*** 获取表中的字段信息** @param conn* @return* @throws Exception*/public static ModelTable getTableFieldMap(Connection conn, Map.Entry<String, String> line) throws Exception {DatabaseMetaData meta = conn.getMetaData();String tableName = line.getKey();String tableComment = line.getValue();ResultSet rs = meta.getColumns(null, "%", tableName, "%");Map<String, MapEntry> tableFieldMap = new HashMap<>();ModelTable modelTable = new ModelTable();modelTable.setTableName(tableName);modelTable.setFields(tableFieldMap);modelTable.setTableComment(tableComment);while (rs.next()) {String columnName = rs.getString("COLUMN_NAME");String dataTypeName = rs.getString("TYPE_NAME");String remarks = rs.getString("REMARKS");tableFieldMap.put(columnName, new MapEntry(dataTypeName, remarks));//字段名称,字段类型}return modelTable;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

返工 PCB 电路板的 6 个技巧

需要解决设计中的问题&#xff0c;例如&#xff1a; 您的原理图符号与 PCB 封装不一致&#xff08;这可能导致信号发送到错误的引脚&#xff09; 您选择了错误的电阻值。 你选择了错误的IC 您忘记在两个引脚之间进行必要的连接&#xff08;并且需要添加跳线&#xff09; 由…

Moonshot AI API使用(1)-获取MOONSHOT_API_KEY

Moonshot AI 开放平台 用户注册&#xff0c;使用微信扫码登录 把这个key复制下来

用你熟悉的语言就能开发智能合约,Vara Network 以 WASM 解锁未来应用创新

Vara Network 自推出以来&#xff0c;凭借其基于 Gear Protocol 的独特架构和强大的开发工具&#xff0c;为开发者提供了一个高效、安全的智能合约构建平台。Vara Network 通过采用先进的 Actor 模型、持久内存概念和 WebAssembly 技术&#xff0c;实现了异步消息处理、并行计算…

OpenFeign --学习笔记

什么是OpenFeign&#xff1f; OpenFeign可以想象成一座连接客户端&#xff08;服务器&#xff09;和服务器之间的桥梁。在微服务架构中&#xff0c;各个服务之间像小岛屿一样分布在网络上&#xff0c;它们需要相互通信才能协同工作。但是&#xff0c;这些岛屿之间并没有现成的…

CentOS 系统常用信息查询:CPU、内存、硬盘、系统运行时长等

CentOS 是基于 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源代码构建的&#xff0c;是一种流行的 Linux 操作系统。在 CentOS 中&#xff0c;我们可以通过一些命令来查询系统的各种常用信息&#xff0c;包括 CPU 使用情况、内存使用情况、硬盘容量、系统运行时长等…

SVNCloud 与 Navicat和IDEA的连接

文章目录 SVNCloud 配置Navicat访问云端数据库与IDEA Java jdbc 的连接 SVNCloud 配置 访问网址&#xff1a;SVN注册账号&#xff0c;进入mysql区域&#xff1a; 数据库管理->创建数据库&#xff0c;输入数据库名称和密码&#xff0c;注意&#xff0c;这里的数据库名称实际…

6、后端项目初始化

打开idea后&#xff0c; New Project &#xff0c;用Maven构建 Spring Boot 项目 点击Next后&#xff1a;先勾选两个基本的依赖&#xff0c;后面再手动添加其它需要的依赖 Spring Web: 表示是一个web应用程序 Lombok&#xff1a;写实体类的时候添加Data注解后就会自动加上g…

Linux网络编程:网络层协议|IP

目录 前言&#xff1a; 1.IP协议 1.1.IP协议格式 1.2.网段划分 1.2.1.知识引入 1.2.2.IP地址划分和子网掩码 1.3.IP地址分类 1.3.1.特殊IP地址 ​编辑 1.3.2.私有IP和公网IP 1.3.3.浅谈NAT技术 1.4.路由 1.4.1.什么是路由 1.4.2.路由表 1.5.网络层数据切片和组装…

MYSQL基础_01_数据库概述

第01章_数据库概述 1. 为什么要使用数据库 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c;数据持久化意味着将内存中的数据保存到硬盘上加以”固化”&#xff0c;而持久化的实现过程大多…

三招搞定“找不到msvcp140.dll无法继续执行代码”问题

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到msvcp140.dll”。那么&#xff0c;这个错误提示到底是什么意思呢&#xff1f;又该如何解决这个问题呢&#xff1f;本文将从以下几个方面进行详细阐述。 一&#xff0c;msvcp140.dll文…

如何轻松将Android同步到 PC? 【6个最适合你的方法!】

尽管许多Android手机都配备了充足的数据存储空间&#xff0c;但将手机中的重要数据备份到电脑上始终是明智之举&#xff0c;以防止数据丢失。那么&#xff0c;如何将Android手机与电脑同步呢&#xff1f;虽然大多数Android用户可能会使用USB线或蓝牙传输文件到PC&#xff0c;但…

水电表自动抄表系统

1.简述 水电表自动抄表系统是一种现代化智能化管理系统&#xff0c;它利用先进的物联网&#xff0c;完成了远程控制、即时、零接触的水电表读值收集&#xff0c;大大提升了公共事业服务项目的效率和准确性。该系统不仅减少了人工抄表工作量&#xff0c;还避免了人为失误&#…

动画制作软件有哪些?最后一款动画渲染必备

探索动画的无限可能&#xff0c;从简单的线条到复杂的三维世界&#xff0c;动画制作软件是艺术家们实现创意的得力助手。无论是手绘动画的细腻笔触&#xff0c;还是3D建模的立体展现&#xff0c;这些软件都极大地丰富了动画制作的手法和表现形式。接下来&#xff0c;我们将介绍…

应急管理大数据指挥中心解决方案(51页PPT)

方案介绍&#xff1a; 本应急管理大数据指挥中心解决方案充分利用了大数据技术的优势&#xff0c;实现了信息的快速收集、分析和决策支持。通过数据融合、协同指挥、智慧化决策和平台建设等方面的努力&#xff0c;提高了应急管理的效率和准确性&#xff0c;为应对各类突发事件…

珠海鸿瑞毛利率持续下滑:核心产品销量大降,偿债能力偏弱

《港湾商业观察》黄懿 日前&#xff0c;珠海市鸿瑞信息技术股份有限公司&#xff08;下称“珠海鸿瑞”&#xff09;收到了北京证券交易所发出的第三轮审核问询函。 此前&#xff0c;2020年11月&#xff0c;珠海鸿瑞曾向深交所报送上市申请。IPO申请文件获受理后&#xff0c;珠…

Java/Golang:活用interface,增加程序扩展性

场景 在paas中间件众多的场景下&#xff0c;做一款用于巡检多个paas组件健康状态的工具。工具的编写需要具备一定的扩展性&#xff0c;便于后续新增某个paas组件巡检的功能。 管理多个paas组件&#xff0c;需要方便扩展新增。 思路 使用面向对象编程思想&#xff0c;首先对…

Maven使用${revision}实现多模块版本统一管理及注意事项

在 Maven 中&#xff0c;确实可以利用 ${revision} 来实现多模块项目的版本统一管理&#xff0c;尤其是在使用一些高级特性如 Maven Release Plugin 或者是在 CI/CD 流程中动态设置版本时。${revision} 是一个特殊的变量&#xff0c;它允许你在构建时动态地使用或设定项目的版本…

普通人如何找到合适的创业方向

作为普通人创业&#xff0c;试错的成本是很高的&#xff0c;哪怕是低成本创业&#xff0c;你起码也得花费大量的时间&#xff0c;所以&#xff0c;在方向的选择上&#xff0c;我们需要谨慎&#xff0c;避免因为方向的选择错误&#xff0c;导致陷入进退两难的地步。 创业方向如何…

程序员的职业素养:坚持学习与团队协作的价值

程序员应该有什么职业素养&#xff1f; 程序员的职业素养&#xff1a;坚持学习与团队协作的价值 程序员这一职业不仅要求高超的技术能力&#xff0c;更需要具备多方面的职业素养。随着技术的发展和行业的变化&#xff0c;程序员不仅要紧跟技术潮流&#xff0c;还要具备良好的…

男士内裤比较好的品牌有哪些?五款物超所值的男款内裤安利

挑选男士内裤时&#xff0c;哪一款更合适呢&#xff1f;这个问题想必让许多人感到困惑。现在市场上的男士内裤种类繁多&#xff0c;确实让人眼花缭乱&#xff0c;不知从何下手。为了帮助大家解决这一难题&#xff0c;今天特地为大家整理了一些选购男士内裤的技巧&#xff0c;并…