精华内容
下载资源
问答
  • Java代码实体类生成SQL语句(Java实体类转数据库)

    万次阅读 多人点赞 2021-07-19 17:43:04
    有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可。 代码如下: ...

    有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可。

    下载:https://download.csdn.net/download/weixin_44893902/20367422
    在这里插入图片描述

    代码如下:

    package Main;
    
    import javax.xml.bind.annotation.XmlElement;
    import java.io.*;
    import java.lang.annotation.Annotation;
    import java.lang.reflect.Field;
    
    public class GenerateSqlFromEntityUtil {
    
    	public static void main(String[] a) {
    		// 实体类的位置
    		Class klass = cn.ac.azure.model.User.class;
    		// 生成的sql语句的位置
    		String outputPath = "D:/outSql/User.txt";
    		generateTableSql(klass, outputPath, null);
    		System.out.println("生成结束");
    	}
    
    	public static void writeFile(String content, String outputPath) {
    		File file = new File(outputPath);
    		System.out.println("文件路径: " + file.getAbsolutePath());
    		// 输出文件的路径
    		if (!file.getParentFile().exists()) {
    			file.getParentFile().mkdirs();
    		}
    		FileOutputStream fos = null;
    		OutputStreamWriter osw = null;
    		BufferedWriter out = null;
    
    		try {
    			// 如果文件存在,就删除
    			if (file.exists()) {
    				file.delete();
    			}
    			file.createNewFile();
    			fos = new FileOutputStream(file, true);
    			osw = new OutputStreamWriter(fos);
    			out = new BufferedWriter(osw);
    			out.write(content);
    			// 清空缓冲流,把缓冲流里的文本数据写入到目标文件里
    			out.flush();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				fos.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    
    			try {
    				osw.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    
    			try {
    				out.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    	public static void generateTableSql(Class obj, String outputPath, String tableName) {
    		// tableName 如果是 null,就用类名做表名
    		if (tableName == null || tableName.equals("")) {
    			tableName = obj.getName();
    			tableName = tableName.substring(tableName.lastIndexOf(".") + 1);
    		}
    		// 表名用大写字母
    		tableName = tableName.toUpperCase();
    
    		Field[] fields = obj.getDeclaredFields();
    		Object param;
    		String column;
    
    		StringBuilder sb = new StringBuilder();
    
    		sb.append("drop table if exists ").append(tableName).append(";\r\n");
    
    		sb.append("\r\n");
    
    		sb.append("create table ").append(tableName).append("(\r\n");
    
    		System.out.println(tableName);
    
    		boolean firstId = true;
    
    		for (int i = 0; i < fields.length; i++) {
    			Field f = fields[i];
    
    			column = f.getName();
    
    			System.out.println(column + ", " + f.getType().getSimpleName());
    
    			param = f.getType();
    			sb.append(column); // 一般第一个是主键
    
    			if (param instanceof Integer) {
    				sb.append(" INTEGER ");
    			} else {
    				// 注意:根据需要,自行修改 varchar 的长度。这里设定为长度等于 50
    				int length = 50;
    				sb.append(" VARCHAR(" + length + ")");
    			}
    
    			if (firstId == true) {
    				sb.append(" PRIMARY KEY ");
    				firstId = false;
    			}
    
    			// 获取字段中包含 fieldMeta 的注解
    
    			// 获取属性的所有注释
    			Annotation[] allAnnotations = f.getAnnotations();
    
    			XmlElement xmlElement = null;
    			Class annotationType = null;
    
    			for (Annotation an : allAnnotations) {
    				sb.append(" COMMIT '");
    				xmlElement = (XmlElement) an;
    				annotationType = an.annotationType();
    				param = ((XmlElement) an).name();
    				System.out.println("属性 " + f.getName() + " ----- 的注释类型有: " + param);
    				sb.append(param).append("'");
    			}
    
    			if (i != fields.length - 1) { // 最后一个属性后面不加逗号
    				sb.append(", ");
    			}
    
    			sb.append("\n");
    		}
    
    		String sql = sb.toString();
    
    		sql = sb.substring(0, sql.length() - 1) + "\n) " + "ENGINE = INNODB DEFAULT CHARSET = utf8;";
    
    		writeFile(sql, outputPath);
    	}
    }
    
    展开全文
  • java 实体类 代码生成器 带注释
  • Java实体类中封装其他实体类并引用

    千次阅读 2020-03-28 19:44:53
    在引用的时候有人会把二个表的数据全都封装在一个实体类中,然后在对这个实体类进行操作,但如果是三个表呢?四个表呢?还都封装在一个实体类吗?这样被封装的实体类的数据是不是太多了呢?而且也会照成层次不分,...

    在Java开发过程中有很多情况是二个表及以上的联合操作,这是需要分清楚表的主次关系。在引用的时候有人会把二个表的数据全都封装在一个实体类中,然后在对这个实体类进行操作,但如果是三个表呢?四个表呢?还都封装在一个实体类吗?这样被封装的实体类的数据是不是太多了呢?而且也会照成层次不分,大大的抬高了代码的耦合性。和实体类泛滥的情况。下面开始介绍该如何正确的封装实体类

    第一个实体类

    public class UsersLogin {
        private Integer usersId;
        private String usersName;
        private String pass;
        private int flag;
        //省略Getter和Setter
        }
    

    第二个实体类

    public class Shoopping {
        private Integer shoopId;
        private String goodsName;
        private Double price;
        private String address;
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date produceDate;
        private String picture;
        private String categoryName;
        private int num;
        private int flag;
        //引用第一个表的实体对象
        private UsersLogin usersLogin;
        //省略Getter和Setter
        }
    

    使用mapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.springboot.mapper.ShiroUserMapper">
    <resultMap autoMapping="true" type="com.springboot.entity.UsersLogin " id="goodsMap">
        <id property="usersId" column="usersId"/>
        <association autoMapping="true" property="shiroUser" javaType="com.springboot.entity.Shoopping ">
            <id property="shoopId" column="shoopId"/>
        </association>
                <!--
            复杂的属性我们需要单独处理
               对象使用 : association
               集合使用 : collection
            -->
            <!--   collection中的ofType:使用ofType获取   -->
    <!--        <collection property="实体类属性名" ofType="接收获取的内容">-->
    <!--            <result column="employee_id" property="employeeId"></result>-->
    <!--        </collection>-->
    </resultMap>
        <select id="findUserList" resultMap="goodsMap">
             select * from UsersLogin u,Shoopping r where u.usersId=r.shoopId
        </select>
    </mapper>
    

    查询结果(我这展示的结果跟上面的实体类不对应,但大致结果是这种格式的)

    [
    UserList{id=1, user_name='admin@shiro.con', password='admin', role=Role{id=1, role_name='admin', user_name='admin@shiro.con'}},
    UserList{id=2, user_name='test@shiro.con', password='e10adc3949ba59abbe56e057f20f883e', role=Role{id=2, role_name='test', user_name='test@shiro.con'}}]
    

    第二种:创建第三个实体类,直接把这二个实体类封装里面

    第一个ShiroUser

    public class ShiroUser {
        private int id;
        private String user_name;
        private String password;
        //省略里面的方法
        }
    

    第二个Shiro_user_role

    public class Shiro_user_role {
        private int id;
        private String role_name;
        private String user_name;
        //省略方法
        }
    

    第三个UserList

    public class UserList {
        private ShiroUser shiroUser;
        private Shiro_user_role role;
        //省略方法
        }
    

    配置mapper.xml文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.springboot.mapper.ShiroUserMapper">
        <resultMap autoMapping="true" type="com.springboot.entity.UserList" id="goodsMap">
            <association autoMapping="true" property="role" javaType="com.springboot.entity.Shiro_user_role">
                <id property="user_name" column="user_name"/>
            </association>
            <association autoMapping="true" property="shiroUser" javaType="com.springboot.entity.ShiroUser">
                <id property="user_name" column="user_name"/>
            </association>
        </resultMap>
        <select id="findUserList" resultMap="goodsMap">
             select * from shiro_user u,shiro_user_role r where u.user_name=r.user_name
        </select>
    </mapper>
    

    结果:

    [
    UserList{shiroUser=ShiroUser{id=1, user_name='admin@shiro.con', password='admin'},
    role=Role{id=1, role_name='admin', user_name='admin@shiro.con'}
    },
    UserList{shiroUser=ShiroUser{id=2, user_name='test@shiro.con', password='e10adc3949ba59abbe56e057f20f883e'},
    role=Role{id=2, role_name='test', user_name='test@shiro.con'}
    }
    ]
    

    如果需要在html页面显示:

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>权限管理</title>
    </head>
    <body>
      <table>
          <tr>
              <td>id</td><td>用户名</td><td>角色</td>
          </tr>
          <th:block th:each="u:${userLists}">
              <tr>
                  <td th:text="${u.getShiroUser().getId()}"></td>
                  <td th:text="${u.getShiroUser().getUser_name()}">
                  <td th:text="${u.getRole().getRole_name()}">
              </tr>
          </th:block>
      </table>
    </body>
    </html>
    
    展开全文
  • Java实体类无法导入/找不到实体类 错误:程序com.xxx.xxx不存在 解决办法: 找到实体类模块,右键src文件——> Mark Directory as ——> Sources Root

    错误:程序包com.xxx.xxx不存在
    在这里插入图片描述
    解决办法:
    找到实体类模块,右键src文件——> Mark Directory as ——> Sources Root
    在这里插入图片描述

    展开全文
  • java实体类的值赋给另一个实体类

    千次阅读 2020-01-08 12:06:25
    java实体类的值赋给另一个实体类: **使用背景:**在原有项目基础上开发时有时需要在不能改变原文件的情况下对原有的实体类的某些字段进行修改。 解决方案:使用 BeanUtils.copyProperties(源文件, 新文件); 需要...

    java实体类的值赋给另一个实体类:

    使用背景:在原有项目基础上开发时有时需要在不能改变原文件的情况下对原有的实体类的某些字段进行修改。

    解决方案:使用 BeanUtils.copyProperties(源文件, 新文件);
    需要的包:org.springframework.beans.BeanUtils;

    注:新文件中的参数需要与源文件保持一致。

    与原set方式效果对比:
    在这里插入图片描述

    展开全文
  • 解析java实体类

    千次阅读 2011-03-09 00:11:00
    <br />对java实体类的众多理解: A .就是属性类,通常定义在model层里面  B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。 好处: 1.对对象实体的封装,体现OO思想。...
  • import java.io.IOException;import java.util.ArrayList;import com.fasterxml.jackson.databind.ObjectMapper;import com.fh.panghu.entity.User;import net.sf.json.JSONArray;import net.sf...
  • Java实体类:是指与数据库中相对应的表,成一一对应关系,实体类中的字段包括字段和字段类型,往数据库中存的是字段值单个的。业务复杂的情况下,需要实体类中还要包含List<实体类>,举例来说,问题表中有...
  • java实体类为什么要写.toString()方法?

    千次阅读 多人点赞 2018-02-08 15:34:28
    java实体类重写.toString()方法 前言 笔者在做javaweb项目时候,使用SSM+maven+easyui,然后在写java实体类的时候,发现大家都要写tostring方法,那么为什么java实体类都要写.toString()方法?于是顺便在这里...
  • java获取实体类的属性和属性值

    千次阅读 2021-01-28 12:22:45
    Field常用方法Field获取实体类的属性和属性值实现步骤输出结果 Field是什么? Field是一个类,位于java.lang.reflect下。在Java反射中Field类描述的是类的属性信息,功能包括: 获取当前对象的成员变量的类型 对...
  • 数据库sql转Java实体类

    千次阅读 2017-02-04 16:01:18
    功能不是很完善,自动生成以后,没有转换成小驼峰格式,待完善......package ...import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.sql.C
  • java一个实体类的值如何赋给另一个实体类的相同属性 导入 org.springframework.beans.BeanUtils。 使用 BeanUtils.copyProperties()方式 举例:假设student类和teacher类都有name属性,通过下面一段代码,teacher...
  • java 实体类和Dao层代码生成器

    热门讨论 2012-04-25 00:06:30
    通过查询数据库可以生成目标库中表对应的实体类和dao类,dao类中有增删改和主键查询,关键字查询和全查 可以自定义生成文件的位置,包名,可以选择是否生成表的对应类.
  • Java实体类——entity类的使用与学习

    千次阅读 2020-12-15 14:03:04
    Java实体类(entity)一、前言(项目代码引申)二、实体类的众多理解三、实体类的作用四、实体类的书写规范五、序列化的必要性 一、前言(项目代码引申) 在一个开发的android项目中,使用到了Entity类 其中...
  • json与java实体类相互转换

    千次阅读 2020-05-11 14:21:26
    java实体类如下: ··· public class VersionInfo { String productname; String productversion; List features; List enhances; List compatibilitys; List others; //省略set get } ··· 创建json字符串用于...
  • json与java实体类的相互转换

    万次阅读 2015-04-13 20:08:55
    json与java实体类的相互转换
  • 根据java 实体类生成建表语句

    千次阅读 2018-03-01 10:53:56
    根据java 实体类生成建表语句 直接上代码: package com.sql; import oa.entity.User; import java.io.File; import java.io.IOException; import java.lang.annotation.Annotation; import java.lang....
  • Java实体类(entity)作用

    千次阅读 2018-03-22 18:11:37
    java实体类的众多理解:A .就是属性类,通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。好处:1.对对象实体的封装,体现OO思想。2.属性可以对字段定义和状态进行判断和...
  • 重写Java实体类toString方法

    千次阅读 2017-07-10 22:27:13
    利用ReflectionToStringBuilder重写toString方法,让日志可以直接打印对象中的数据,方便跟踪问题。 1、需要引入jar,添加maven依赖...2、为实体类添加toString方法: public String toString() { return Reflection
  • 看例子: public class A implements Serializable { public String myRoomCount; public List<B> currentTask;...调用内部实体类B, A a = new A () ; B b = a .new() ;
  • 实体类继承抽象类之后,如果抽象类中有抽象方法,那么实体类也就是继承了 抽象类中的抽象方法,包含了抽象方法的类一定是抽象类的,但是java中最终实体类 还是实体类,所以不是自相矛盾吗?
  • java项目导实体类包和Service包导不进去,Controller层报错, 刚开始我就以为包导错了,把controller层的包删了重新导入,还是不行, 查看报错的原因发现了 然后选择fix project setup后就ok了。 记录...
  • Java,什么是实体类,实体类有什么用?

    万次阅读 多人点赞 2014-06-24 12:02:54
    实体类是在JAVA软件开发中
  • 首先是实体类代码,仅用一个实体类演示,读者可自行增加实体类,我实体类用的是lombok来自行创建get、set方法和有参无参方法 @Data @AllArgsConstructor @NoArgsConstructor public class Users implements ...
  • java实体类不写get/set方法

    万次阅读 2018-02-27 14:41:19
    java实体类不写get/set方法1、下载地址https://projectlombok.org/downloadMyeclipse、eclipse安装lombokLombok是一种Java实用工具,可以帮助开发人员消除Java的冗长,具体看lombok的官网:...下载lombok.jar 2....
  • java实体类为什么要写.toString()方法

    万次阅读 多人点赞 2018-08-09 10:13:28
    java实体类重写.toString()方法... 笔者在做javaweb项目时候,使用SSM+maven+easyui,然后在写java实体类的时候,发现大家都要写tostring方法,那么为什么java实体类都要写.toString()方法?于是顺便在这里记录一下...
  • import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; im
  • IDEA-自动生成java实体类详细

    万次阅读 多人点赞 2019-08-26 13:57:28
    IDEA-自动生成java实体类1.项目添加数据库。2.生成实体类3. 修改默认生成脚本 idea这个功能真的不错,生成的实体类几乎不用改动。 下面生成展示(自动生成的,没有人工进行改动) 很强大,下面说下如何使用。 1....
  • 前面做的在mybatis通过注解自动创建更新表结构的项目,其中在spring加载完毕之后需要去获取所有实体类的class,用来获取实体类属性上的注解,进而分析表结构达到创建修改表结构的目的。 所以就需要一个功能,通过...
  • 谈一下个人对ENTITY,VO,DTO的理解。 ENTITY:与库表中的字段含义完全对应,只多不少。 DTO:接收前端传参、模块调用传参、接收部分数据库返回字段。是ENTITY的精简版。 VO:很少用【接触过的项目大都是用dto】 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 281,231
精华内容 112,492
关键字:

java实体类包名

java 订阅