java数据库和实体类

问题描述:在JAVA Web中,实体类的作用是什么? 大家好,给大家分享一下java数据类型与数据库的数据类型,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

如何通过java反射将数据库表生成实体类

java数据库和实体类的相关图片

1、作用:这个类可以用来存储和传输数据。在Java中,实体类就是一个拥有Set和Get方法的类。实体类通常总是和数据库之类的(所谓持久层数据)联系在一起。这种联系是借由框架(Hibernate)来建立的。

2、例子:我先在一个类中通过dao类获取数据库中表的数据存储在数组上,然后实例化该实体类,调用该实体类的setter()方法,将数据存储到该类中。接着我在另一个地方获取该实体类的实例(或在jsp页面中),调用该实体类的getter()方法,将数据给读出来作其他用处或者显示出来。这只是举个例子,也不一定都这样用。

3、JAVA Web

(1)Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

(2)主要框架:Java的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。

JAVA从数据库查出来的数据放到实体类想用反射的方法给他们赋值,怎么做?的相关图片

JAVA从数据库查出来的数据放到实体类想用反射的方法给他们赋值,怎么做?

首先有几点声明:

1、代码是在别人的基础进行改写的;

2、大家有什么改进的意见可以告诉我,也可以自己改好共享给其他人;

3、刚刚毕业,水平有限,肯定有许多不足之处;

4、希望刚刚学习java的同学能有所启发。

//这个是做转换的类,里面的DB只是封装了数据库的连接,大家可以用自己的,随意。

package com.tt.util.gen.entity.tool;。

import java.io.File;。

import java.io.FileWriter;。

import java.io.IOException;。

import java.io.InputStream;。

import java.io.PrintWriter;。

import java.sql.Connection;。

import java.sql.DatabaseMetaData;。

import java.sql.DriverManager;。

import java.sql.PreparedStatement;。

import java.sql.ResultSet;。

import java.sql.ResultSetMetaData;。

import java.sql.SQLException;。

import java.util.ArrayList;。

import java.util.Date;。

import java.util.List;。

import java.util.Properties;。

import com.tt.util.DB;。

public class GenEntityMysql {。

private String packageOutPath;// 指定实体生成所在包的路径。

private String authorName;// 作者名字。

private String tablename;// 表名。

private String databasename;// 数据库名。

private List<String> tablenames;// 拿到对应数据库中所有的实体类(实体类需要与其他表明做区分)

private List<String> colnames; // 列名集合。

private List<String> colTypes; // 列名类型集合。

private boolean f_util = false; // 是否需要导入包java.util.*。

private boolean f_sql = false; // 是否需要导入包java.sql.*。

/*

* 构造函数

*/

public GenEntityMysql() {。

// 使用properties读取配置文件。

Properties prop = new Properties();。

try {

InputStream genentity = getClass().getResourceAsStream(。

"/genentity.properties");。

prop.load(genentity);。

if (genentity != null) {。

genentity.close();。

} catch (Exception e) {。

System.out.println("file " + "catalogPath.properties"。

+ " not found!\n" + e);。

this.databasename = prop.getProperty("databasename").toString();。

this.tablename = prop.getProperty("tablename").toString();。

this.packageOutPath = prop.getProperty("packageOutPath").toString();。

this.authorName = prop.getProperty("authorName").toString();。

// 创建多个实体类

private void genEntity(List<String> tablenames, Connection conn) {。

// 使用第归生成文件

for (String tablename : tablenames) {。

this.genEntity(tablename, conn);。

// 创建单个实体类

private void genEntity(String tablename, Connection conn) {。

String sql = "select * from " + tablename;。

PreparedStatement pstmt = null;。

ResultSetMetaData rsmd = null;。

try {

pstmt = DB.getPStmt(conn, sql);。

rsmd = pstmt.getMetaData();。

int size = rsmd.getColumnCount(); // 统计列。

colnames = new ArrayList<String>();。

colTypes = new ArrayList<String>();。

for (int i = 0; i < size; i++) {。

colnames.add(rsmd.getColumnName(i + 1));。

colTypes.add(rsmd.getColumnTypeName(i + 1));。

if (colTypes.get(i).equalsIgnoreCase("datetime")) {。

f_util = true;

if (colTypes.get(i).equalsIgnoreCase("image")。

|| colTypes.get(i).equalsIgnoreCase("text")) {。

f_sql = true;

System.out.println(colnames);。

System.out.println(colTypes);。

} catch (SQLException e1) {。

// TODO Auto-generated catch block。

e1.printStackTrace();。

} finally {

DB.close(pstmt);。

// 在内存中生成代码

String content = parse(tablename);。

// 写入到文件中

try {

File directory = new File("");。

String outputPath = directory.getAbsolutePath() + "/src/"。

+ this.packageOutPath.replace(".", "/") + "/";。

System.out.println("写出的路径:" + outputPath);。

// 检测路径是否存在,不存在就创建路径。

File path = new File(outputPath);。

if (!path.exists() && !path.isDirectory()) {。

path.mkdir();

System.out.println(path.exists());。

// 创建文件

outputPath += initcap(tablename) + ".java";。

File file = new File(outputPath);。

if (!file.exists()) {。

file.createNewFile();。

// 写出到硬盘

FileWriter fw = new FileWriter(file);。

PrintWriter pw = new PrintWriter(fw);。

pw.println(content);。

pw.flush();

pw.close();

} catch (IOException e) {。

e.printStackTrace();。

private void getAllEntityTable(Connection conn, List<String> tablenames) {。

ResultSet rs = null;。

try {

DatabaseMetaData dmd = (DatabaseMetaData) conn.getMetaData();。

/*

* TABLE_CAT String => 表类别(可为 null)

* TABLE_SCHEM String => 表模式(可为null)

* TABLE_NAME String => 表名称。

* TABLE_TYPE String => 表类型。

*/

rs = dmd.getTables(null, null, "%", null);。

while (rs.next()) {。

tablenames.add(rs.getString("TABLE_NAME"));。

} catch (SQLException e) {。

e.printStackTrace();。

} finally {

try {

rs.close();

} catch (SQLException e) {。

e.printStackTrace();。

/**

* @param tablename。

* @return

*/

private String parse(String tablename) {。

StringBuffer sb = new StringBuffer();。

// 判断是否导入工具包

if (f_util) {

sb.append("import java.util.Date;\r\n");。

if (f_sql) {

sb.append("import java.sql.*;\r\n");。

sb.append("package " + this.packageOutPath + ";\r\n");。

sb.append("\r\n");。

// 注释部分

sb.append(" /**\r\n");。

sb.append(" * " + tablename + " 实体类\r\n");。

sb.append(" * " + new Date() + " " + this.authorName + "\r\n");。

sb.append(" */ \r\n");。

// 实体部分

sb.append("\r\n\r\npublic class " + initcap(tablename) + "{\r\n");。

processAllAttrs(sb);// 属性。

processAllMethod(sb);// get set方法。

sb.append("}\r\n");。

return sb.toString();。

/**

* 功能:生成所有属性

* @param sb

*/

private void processAllAttrs(StringBuffer sb) {。

for (int i = 0; i < colnames.size(); i++) {。

sb.append("\tprivate " + sqlType2JavaType(colTypes.get(i)) + " "。

+ colnames.get(i) + ";\r\n");。

/**

* 功能:生成所有方法

* @param sb

*/

private void processAllMethod(StringBuffer sb) {。

for (int i = 0; i < colnames.size(); i++) {。

sb.append("\tpublic void set" + initcap(colnames.get(i)) + "("。

+ sqlType2JavaType(colTypes.get(i)) + " " + colnames.get(i)。

+ "){\r\n");

sb.append("\t\tthis." + colnames.get(i) + "=" + colnames.get(i)。

+ ";\r\n");

sb.append("\t}\r\n");。

sb.append("\tpublic " + sqlType2JavaType(colTypes.get(i)) + " get"。

+ initcap(colnames.get(i)) + "(){\r\n");。

sb.append("\t\treturn " + colnames.get(i) + ";\r\n");。

sb.append("\t}\r\n");。

/**

* 功能:将输入字符串的首字母改成大写。

* @param str

* @return

*/

private String initcap(String str) {。

char[] ch = str.toCharArray();。

if (ch[0] >= 'a' && ch[0] <= 'z') {。

ch[0] = (char) (ch[0] - 32);。

return new String(ch);。

/**

* 功能:获得列的数据类型

* @param sqlType。

* @return

*/

private String sqlType2JavaType(String sqlType) {。

if (sqlType.equalsIgnoreCase("bit")) {。

return "boolean";。

} else if (sqlType.equalsIgnoreCase("tinyint")) {。

return "byte";

} else if (sqlType.equalsIgnoreCase("smallint")) {。

return "short";。

} else if (sqlType.equalsIgnoreCase("int")) {。

return "int";

} else if (sqlType.equalsIgnoreCase("bigint")) {。

return "long";

} else if (sqlType.equalsIgnoreCase("float")) {。

return "float";。

} else if (sqlType.equalsIgnoreCase("decimal")。

|| sqlType.equalsIgnoreCase("numeric")。

|| sqlType.equalsIgnoreCase("real")。

|| sqlType.equalsIgnoreCase("money")。

|| sqlType.equalsIgnoreCase("smallmoney")) {。

return "double";。

} else if (sqlType.equalsIgnoreCase("varchar")。

|| sqlType.equalsIgnoreCase("char")。

|| sqlType.equalsIgnoreCase("nvarchar")。

|| sqlType.equalsIgnoreCase("nchar")。

|| sqlType.equalsIgnoreCase("text")) {。

return "String";。

} else if (sqlType.equalsIgnoreCase("datetime")) {。

return "Date";

} else if (sqlType.equalsIgnoreCase("image")) {。

return "Blod";

return null;

/**

* 出口 TODO

* @param args

*/

public static void main(String[] args) {。

new GenEntityMysql().start();。

private void start() {。

// 创建连接

Connection conn = DB.getConn();。

if (databasename != null && !databasename.equals("")。

&& tablename != null && !tablename.equals("")) {。

System.out.println("databasename 和 tablename 不能同时存在");。

} else {

// 如果配置文件中有数据库名字,则可以拿到其中所有的实体类。

if (databasename != null && !databasename.equals("")) {。

// 获取所有实体表名字

tablenames = new ArrayList<String>();。

getAllEntityTable(conn, tablenames);。

System.out.println(tablenames);。

// 为每个实体表生成实体类

genEntity(tablenames, conn);。

} else {

// 为指定实体表生成实体类

genEntity(tablename, conn);。

// 关闭数据库连接

if (conn != null) {。

DB.close(conn);。

java怎么将实体类是与数据库对应上的的相关图片

java怎么将实体类是与数据库对应上的

说一个大概思路吧:

1.读取数据:从数据库中读取数据的同时,拿到元数据,即metadata;。

2.实例化:通过类名,利用反射 实例你的实体类(类名可以和表名保持一致,这样就不用写额外的 。

映射了),如果你只是想通过反射赋值的话,你也可以直接new个类;

3.方法调用:通过元数据,利用反射 得到你的set方法(方法名可以和字段名保持一致,否则你要写。

出映射关系);

java里面的实体类是干什么的???的相关图片

java里面的实体类是干什么的???

java怎么将实体类是与数据库对应上的。

返回数据库字段值是null的话,int类型会报错。int是基本数据类型,其声明的是变量,而null则是对象。所以建议用integer;。

java中,实体类是什么意思

类的分类:边界类、实体类和控制类 。

实体类主要是作为数据管理和业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。

原文地址:http://www.qianchusai.com/java%E6%95%B0%E6%8D%AE%E5%BA%93%E5%92%8C%E5%AE%9E%E4%BD%93%E7%B1%BB.html

校园网怎么多台设备同时登录

校园网怎么多台设备同时登录

list取值的几种方法,list取值的几种方法有哪些

list取值的几种方法,list取值的几种方法有哪些

cc/草莓蛋糕图片,草莓蛋糕图片大全简单漂亮

cc/草莓蛋糕图片,草莓蛋糕图片大全简单漂亮

旅游景点文案,旅游简单干净的文案

旅游景点文案,旅游简单干净的文案

lw/周杰伦演唱会图片精选,周杰伦演唱会周杰伦本人图片大全

lw/周杰伦演唱会图片精选,周杰伦演唱会周杰伦本人图片大全

新东方安宁日语百度云,安宁新东方培训学校怎么样

新东方安宁日语百度云,安宁新东方培训学校怎么样

v2/article-1013

v2/article-1013

homekit怎么实现

homekit怎么实现

女性肿瘤六项只有ca125偏高,妇科炎症ca125会高多少

女性肿瘤六项只有ca125偏高,妇科炎症ca125会高多少

如何写好墨子,如何写好墨子书法作品

如何写好墨子,如何写好墨子书法作品