通过java反射实现对javabean生成各种sql语句,有请大家评论,更改
package com.pdt.util; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; public class BeanUtil { /** * @param args */ public static void main(String[] args) { System.out.println(getBeanFilesList("com.pdt.bean.Dictionary")); System.out.println(genCreateTableSql("com.pdt.bean.Dictionary")); System.out.println(genInsertSql("com.pdt.bean.Dictionary")); } public static String getBeanName(String bean){ try { Class clz = Class.forName(bean); String clzStr = clz.toString(); //得到类名 String beanName = clzStr.substring(clzStr.lastIndexOf(".")+1).toLowerCase(); return beanName; } catch (ClassNotFoundException e) { e.printStackTrace(); return ""; } } public static List<String> getBeanPropertyList(String bean){ try { Class clz = Class.forName(bean); Field[] strs = clz.getDeclaredFields(); List<String> propertyList = new ArrayList<String>(); for (int i = 0; i < strs.length; i++) { String protype = strs[i].getType().toString(); propertyList.add(protype.substring(protype.lastIndexOf(".")+1)+"`"+strs[i].getName()); } return propertyList; } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } } public static String getBeanFilesList(String bean){ try { Class clz = Class.forName(bean); Field[] strs = clz.getDeclaredFields(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < strs.length; i++) { String protype = strs[i].getType().toString(); if (!strs[i].getName().equals("tableName")&&!strs[i].getType().equals("List")) { sb.append(strs[i].getName()+","); } } sb.deleteCharAt(sb.toString().lastIndexOf(",")); return sb.toString(); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } } /** * 生成建表語句 * @param bean * @return */ public static String genCreateTableSql(String bean){ List<String> beanPropertyList = getBeanPropertyList(bean); StringBuffer sb = new StringBuffer("create table wnk_pdt_"+getBeanName(bean)+"(\n"); for (String string : beanPropertyList) { String[] propertys = string.split("`"); if (!propertys[1].equals("tableName")&&!propertys[1].equals("param")&&!propertys[0].equals("List")) { if (propertys[1].equals("id")) { sb.append(" id bigint primary key auto_increment,\n"); } else { if (propertys[0].equals("int")) { sb.append(" " + propertys[1] + " int default 0 comment '',\n"); } else if (propertys[0].equals("String")) { sb.append(" " + propertys[1] + " varchar(2000) default '' comment '',\n"); } else if (propertys[0].equals("double")) { sb.append(" " + propertys[1] + " double(10,2) default 0.0 comment '',\n"); } else if (propertys[0].equals("Date")) { sb.append(" " + propertys[1] + " datetime comment '',\n"); } } } } sb.append(")"); sb.deleteCharAt(sb.lastIndexOf(",")); return sb.toString(); } /** * 生成查询语句 * @param bean * @return */ public static String genSelectAllSql(String bean){ String filesList = getBeanFilesList(bean); return "select \n "+filesList+" \n from \n wnk_pdt_"+getBeanName(bean)+""; } /** * 生成插入语句 * @param bean * @return */ public static String genInsertSql(String bean){ String filesList = getBeanFilesList(bean); int fl = DataUtil.getCountSonStr(filesList,",")+1; String wenhao = ""; for (int i = 0; i < fl; i++) { if(i==fl-1){ wenhao = wenhao+"?"; }else{ wenhao = wenhao+"?,"; } } return "insert into wnk_pdt_"+getBeanName(bean)+"("+filesList+") values("+wenhao+")"; } }
相关推荐
Java反射JavaBean对象自动生成插入、更新、删除、查询sql语句操作是指通过Java反射机制,依据提供的表名、POJO类型、数据对象自动生成sql语句的技术。这种技术具有很好的参考价值,对开发者有很大的帮助。 Java...
Java反射 JavaBean 对象自动生成插入、更新、删除、查询 SQL 语句操作 Java 反射是 Java 语言中一个强大的功能,它允许开发者在运行时检查和修改类、方法、字段的行为。Java 反射机制可以动态地创建对象、调用方法...
于是一怒之下,自己动手丰衣足食,就自己用Swing写了一个通过数据库的表生成JavaBean的工具,支持MySQL、Oracle、SQLServce、PostgreSQL,完美支持JPA注解,可以同时生成Entity和DTO,可以自动去除表前缀,并支持...
5. 数据库物理结构的SQL表现语言:这是指在数据库设计中,表结构和关系等逻辑概念最终通过SQL(Structured Query Language)语句体现,这些SQL语句定义了数据库的物理存储结构。 6. 数据库开发效率:这是衡量数据库...
10. 使用 Java 实现连接 Oracle 数据库:可以使用 JDBC 驱动程序来连接 Oracle 数据库,并使用 PrepardStatement 对象来执行 SQL 语句。 Java 反射机制和 Javadoc 11. Java 反射机制:Java 反射机制是指在 Java 中...
从给定的文件信息来看,我们正在探讨的是一个与JavaBean相关的类,专门用于处理数据库操作,这在J2SE(Java 2 Standard Edition)环境下非常常见。下面将详细解析这个JavaBean的关键知识点: ### JavaBean简介 ...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。在Java基础学习中,理解并掌握反射是非常关键的一步,因为这不仅可以帮助你深入理解Java的内在机制,还能提升你在...
开发者可能使用SQL语句来执行查询、插入、更新和删除等操作。 6. **安全考虑**: 在实际开发中,需确保用户的登录和会话管理安全,例如使用HTTPS协议传输敏感数据,密码加密存储,防止SQL注入攻击等。 7. **权限...
SQL语句将被用来创建数据表、执行查询、插入和更新数据。 4. **Eclipse**:Eclipse是一款强大的开源集成开发环境,支持多种编程语言,包括Java。在开发这个新闻发布系统时,Eclipse提供了一个统一的工作台,用于...
6. **参数绑定**: MyBatis通过ParameterHandler将Java方法的参数转换为SQL语句的参数,支持传入基本类型、JavaBean、Map等。 7. **TypeHandler**: 类型处理器负责Java类型与数据库类型的转换,确保数据的正确存取。...
15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋...
《Java通用范例开发金典源代码》是一个包含大量Java编程示例的资源集合,旨在帮助开发者深入理解和掌握Java编程语言的各种特性和应用场景。这个压缩包文件中的源代码覆盖了Java语言的基础到高级各个方面,是Java学习...
JavaBean可以被Servlet通过反射机制调用,实现了业务逻辑与表现层的分离,提高了代码的可维护性和复用性。 4. MySQL数据库: MySQL是一种关系型数据库管理系统,广泛应用于Web应用程序中。在这个博客系统中,MySQL...
15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋...
3. JavaBean规范:了解如何编写符合JavaBean规范的类,并通过Java反射机制进行实例化和调用。 4. JDBC:使用Java Database Connectivity API连接SQLServer2000,执行SQL语句。 5. 数据库设计:理解ER模型,设计合理...
文中特别强调了数据结构和算法的重要性,以及Java语言的跨平台、面向对象特性,并对Java技术生态中的各种工具和框架进行了介绍。此外,还包括了JVM内存模型、多线程编程、IO流处理、XML解析、网络编程、数据库设计与...
15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋...
15.2 使用Java反射机制414 15.2.1 获取类型信息414 15.2.2 创建对象417 15.2.3 调用方法419 15.2.4 访问成员变量的值421 15.2.5 操作数组422 15.3 反射与动态代理424 15.3.1 静态代理424 15.3.2 动态代理426 15.4 本...
15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋...