首先连接数据库:  创建包  com.hnsl.util  在里边建DBHelper类

package com.yzx.util;import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class DBHelper {//驱动private static String driver = "com.mysql.jdbc.Driver";//访问数据的链接路径private static String url = "jdbc:mysql:///stu?useSSL=false&serverTimezone=UTC&characterEncoding=utf8";private static String name = "root";private static String pwd = "123456";private static Connection conn;private static PreparedStatement ps;private static ResultSet rs;private DBHelper() {}static {try {Class.forName(driver);System.out.println("驱动加载成功!");} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** 获取链接*/public static Connection getConn() {try {conn = DriverManager.getConnection(url, name, pwd);System.out.println("数据库链接建立成功!");} catch (SQLException e) {e.printStackTrace();}return conn;}/*** 关闭资源*/public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {try {if (conn != null) {conn.close();}if (ps != null) {ps.close();}if (rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();}}public static void close(Connection conn, PreparedStatement ps) {close(conn, ps, null);}public static void close(Connection conn) {close(conn, null, null);}/*** 查询方法** @param sql sql语句* @param obj 参数* @return List<Map>*/public static List<Map> select(String sql, Object... obj) {List<Map> list=new ArrayList<>();
//        1.建立连接getConn();try {
//        2.创建语句对象,预编译ps = conn.prepareStatement(sql);System.out.println("sql语句:"+sql);
//        3.参数处理    itar 普通for循环for (int i = 0; i < obj.length; i++) {System.out.println("第"+(i+1)+"个参数:"+obj[i]);ps.setObject(i + 1, obj[i]);}
//        4.执行sql,得到结果集rs = ps.executeQuery();ResultSetMetaData metaData = rs.getMetaData();//元数据,查询的数据结构while (rs.next()) {Map map = new HashMap();int columnCount = metaData.getColumnCount();//字段的列数,id,name  获取的就是2for (int i = 0; i < columnCount; i++) {//metaData.getColumnLabel(i+1)//这个的从1开始获取第几列的字段名称//rs.getObject(i+1)//根据列数(从1开始)数据集中的数据map.put(metaData.getColumnLabel(i + 1), rs.getObject(i + 1));}list.add(map);}return list;} catch (SQLException e) {e.printStackTrace();} finally {close(conn, ps, rs);}return null;}/*** 编辑方法** @param sql sql语句* @param obj 参数* @return List<Map>*/public static int update(String sql, Object... obj) {int l = 0;
//        1.建立连接getConn();try {
//        2.创建语句对象,预编译ps = conn.prepareStatement(sql);System.out.println("sql语句:"+sql);
//        3.参数处理    itar 普通for循环for (int i = 0; i < obj.length; i++) {System.out.println("第"+(i+1)+"个参数:"+obj[i]);ps.setObject(i + 1, obj[i]);}
//        4.执行sql,得到结果集l = ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();} finally {close(conn, ps, rs);return l;}}public static void main(String[] args) {System.out.println(getConn());}
}

效果:

然后在com.hnsl.util包里   创建Gen类

package com.yzx.util;import java.io.PrintWriter;
import java.util.List;
import java.util.Map;/*** 代码生成类*/
public class Gen {//name:字段名  type:字段类型  comment:字段注释static  String  sql="SELECT  COLUMN_NAME name,DATA_TYPE type,COLUMN_COMMENT comment from  information_schema.`COLUMNS`  where  TABLE_SCHEMA=?  AND  TABLE_NAME=?";static  String  [] table={"stu","student"};//stu:数据库名   student:表名static  String  packages="com.hnsl";//路径static  String  tableName=Change_Upper(table[1]);static  StringBuffer  parameter=new StringBuffer();//parameter  参数public static void main(String[] args) {String  clz="package ${packages}.entity;\n" +"\n" +"import lombok.Data;\n" +"\n" +"@Data\n" +"public class ${tableName} {\n" +"    ${parameter}\n" +"}";List<Map> list=DBHelper.select(sql,table);for(Map map:list){parameter.append("    /**\n").append("    *"+map.get("comment")+"\n").append("    **/\n").append("    private  "+convertDataType(map.get("type").toString())+" "+map.get("name")+";\n");}System.out.println(clz.replace("${packages}",packages).replace("${tableName}",tableName).replace("${parameter}",parameter.toString()));outPW(clz.replace("${packages}",packages).replace("${tableName}",tableName).replace("${parameter}",parameter.toString()),tableName.concat(".java"));}//将更改后的文件输出public static void outPW(String clz,String path){PrintWriter pw=null;try {pw = new PrintWriter(path,"UTF-8");pw.write(clz);} catch (Exception e) {e.printStackTrace();}finally {if(pw!=null){pw.close();}}}//首字母大写,如果有下划线_,下划线_移除之后的第一个字母大写public static String Change_Upper(String s1) {String r = "";String[] a = s1.split("_");//以_为分隔符,将单词分开String[] b = new String[a.length + 1];for (int i = 0; i < a.length; i++) {//substring(0,1)首字母,toUpperCase()大写b[i] = a[i].substring(0, 1).toUpperCase() + a[i].substring(1, a[i].length());r = r + b[i];}return r;}//类型转换public static String convertDataType(String dataType) {switch (dataType) {case "varchar":case "longtext":case "text":return "String";case "double":return "Double";case "int":case "tinyint":return "Integer";case "bigint":return "Long";case "datetime":case "timestamp":case "Date":return "Date";case "decimal":return "BigDecimal";case "char":return "Character";default:return "";}}
}

运行结果:封装实体类生成

Spring逆向生成封装实体类相关推荐

  1. eclipse从数据库逆向生成Hibernate实体类

    2019独角兽企业重金招聘Python工程师标准>>> 做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说 ...

  2. 超详细 图解 : IntelliJ IDEA 逆向生成 JAVA 实体类

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.配置数据库,,这里连接的是mysql. 2.填写 连接数据库的信息,填写完成后可以点击Test ...

  3. mybatis-generator 逆向生成工具(实体、dao、sql)

    介绍: mybatis-generator 是一个逆向生成工具,用于将数据库表逆向生成实体对象(entity),持久层Dao接口以及用于操作数据库的sql语句xml文件.对于简单的单表操作,增删改查几 ...

  4. [转]T4模版引擎之生成数据库实体类

    本文转自:http://www.cnblogs.com/lzrabbit/archive/2012/07/18/2597953.html 在通过T4模版引擎之基础入门 对T4有了初步印象后,我们开始实 ...

  5. 06_04_任务一:拉勾教育后台管理系统[课程管理模块、图片上传、 BeanUtils封装实体类](SSM)

    拉勾教育后台管理系统(SSM) 1. 项目架构 1.1 项目介绍 ​ 拉勾教育后台管理系统,是提供给拉勾教育的相关业务人员使用的一个后台管理系统, 业务人员可以在 这个后台管理系统中,对课程信息.广告 ...

  6. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  7. mysql语句生成在线_在线数据库表(sql语句)生成java实体类工具

    相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设 ...

  8. 【从0到1打造代码生成器】生成Java实体类

    代码生成器是指通过机器来生成各种类型的代码,其应用十分广泛,并且能够极大的提高开发效率.本文将介绍如何利用Velocity模板技术生成一个Java实体类. 问题 Velocity是 JavaEE企业级 ...

  9. 小d课堂mysql_小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...

    笔记 6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类 简介:实战使用IDE根据Mysql自动生成java pojo实体类 1.IDEA连接数据库 菜单View→Tool Window ...

最新文章

  1. 获取应用程序路径信息
  2. cocos2d-x 3.1.1 学习笔记[17] 关于这些活动功能
  3. geek 创业型网站
  4. 山西农信社计算机知识,山西人事考试网 山西农信社考试计算机知识高频考点(二)...
  5. 【推荐】技术人必看的音视频学习资源清单
  6. 【Kafka】kafka SSL close message 远程主机被迫关闭了一个连接
  7. java -jar 怎么停止_图解Java日志体系
  8. mysql8无法修改端口_mysql8.0.18 修改端口报错 Can't start server: Bind on TCP/IP port: Permission denied...
  9. 互联网轻量级框架SSM-查缺补漏第九天
  10. BZOJ3994[SDOI2015] 约数个数和
  11. 前端要点总结1(2021-12)
  12. operator开发流程
  13. 英语3500词(17/20)science主题(2022.3.13)
  14. 涨知识!中国天眼一秒钟要用多少度电?
  15. 一款功能综合的CSS滑动门特效
  16. 一个人写公众号能赚多少钱?我的副业之路
  17. ORACLE 日期加减函数
  18. Session实现网站在线人数统计
  19. devops_关于DevOps的故事
  20. Flash将在2020年12月31日退出历史舞台

热门文章

  1. 王倩兮山水画 【珍藏版】
  2. 你的收入在全国算什么水平?
  3. 在gym的BipedalWalker-v2环境里面训练了agent
  4. 瑞昱 RTL8188CE Wireless LAN 802.11n PCI-E NIC支持5G吗
  5. ServiceNow - 更改列表默认每页显示记录数(Change List Default Row-Count PerPage)
  6. 超级玛丽HTML5源代码学习------(四)
  7. 贾跃亭美国造车全调查,名下已几无资产|钛媒体深度
  8. 大物始于小:我是如何做到 GitHub star 在 5 天内从 0 飙至 666 的
  9. 标准24+1型DVI转VGA头
  10. SQL数据库基础知识-巩固篇一