根据JavaBean创建数据库的操作SQL

import java.lang.reflect.Field;

public class GenerateSQL {

    public static void main(String[] args) {

        Field[] fileds = User.class.getDeclaredFields();
System.out.println(generateFieldsLine(fileds));
System.out.println(generateInsertSql("user", fileds, "user"));
System.out.println(generateUpdateSql("user", fileds, "user")); } public static String generateFieldsLine(Field[] fileds) {
StringBuffer sqlBuilder = new StringBuffer();
for (int i = 0, size = fileds.length; i < size; i++) {
if (i == fileds.length - 1) {
sqlBuilder.append(fileds[i].getName());
continue;
}
sqlBuilder.append(fileds[i].getName()).append(",");
}
return sqlBuilder.toString();
} /**
* @param tableName 数据库表名
* @param fileds 字段数组
* @param beanName mybatis的mapper参数名字
* @return
*/
public static String generateInsertSql(String tableName, Field[] fileds, String beanName) {
String sql = "INSERT INTO " + tableName + "(" + generateFieldsLine(fileds) + ") values ("; StringBuffer sqlBuilder = new StringBuffer();
for (int i = 0, size = fileds.length; i < size; i++) {
if (i == fileds.length - 1) {
sqlBuilder.append("#{" + beanName).append(".").append(fileds[i].getName()).append("}");
continue;
}
sqlBuilder.append("#{" + beanName).append(".").append(fileds[i].getName()).append("}").append(",");
}
return sql + sqlBuilder.toString() + ")";
} public static String generateSelectSQL(String tableName, Field[] fileds) {
StringBuilder sqlBuilder = new StringBuilder();
return sqlBuilder.append("SELECT ").append(generateFieldsLine(fileds)).append(" FROM ").append(tableName).toString();
} public static String generateUpdateSql(String tableName, Field[] fileds, String beanName) {
String sql = "UPDATE " + tableName + " SET "; StringBuffer sqlBuilder = new StringBuffer();
for (int i = 0, size = fileds.length; i < size; i++) {
if (i == fileds.length - 1) {
sqlBuilder.append(fileds[i].getName()).append("=").append("#{" + beanName).append(".").append(fileds[i].getName()).append("}");
continue;
}
sqlBuilder.append(fileds[i].getName()).append("=").append("#{" + beanName).append(".").append(fileds[i].getName()).append("}").append(",");
}
return sql + sqlBuilder.toString() + ")";
} }

  

根据JavaBean创建数据库的操作SQL的更多相关文章

  1. 使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

    打开PD软件: 1.新建概念模型(conceptual Data Model) File-->New Model-->Conceptual Data Mode 或者点击工作区,右键--&g ...

  2. MySQL数据库-表操作-SQL语句(一)

    1. 数据库操作与存储引擎 1.1   数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...

  3. MySQL数据库-表操作-SQL语句(二)

    1. MySQL多表查询 1.1 外键约束 为了消除多张表查询出现的笛卡尔积的现象,MySQL在建表并进行多表之间的关键查询可以使用外键关联查询. 外键:从表1(sub)的某列引用(ref)另外一个表 ...

  4. 创建数据库指定路径sql

    create database stuDB on  primary  -- 默认就属于primary文件组,可省略(/*--数据文件的具体描述--*/    name='stuDB_data',  - ...

  5. 创建数据库表的SQL语句

    创建表.视图.索引的sql语句如下: CREAT TABLE (列名,数据类型,约束) create view(创建视图) create index (创建索引) 1.primary key(主键) ...

  6. 数据库常用操作SQL语句

    禁用触发器: alter table tb disable trigger tir_name 启用触发器: alter table tb enable trigger tir_name

  7. 使用交互式方式在SQL server2017上创建数据库

    软件基础:在电脑上提前安装好SQL server2017,并且安装好其中的SSMS(SQL server Management Studio) 创建方式:交互式 操作内容:创建学生课程数据库系统 步骤 ...

  8. SQL数据库简单操作

    sql语言简介 (1)数据库是文件系统,使用标准sql对数据库进行操作 * 标准sql,在mysql里面使用语句,在oracle.db2都可以使用这个语句 (2)什么是sql * Structured ...

  9. 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入

    文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...

随机推荐

  1. Android Studio 学习(三) 广播

    动态注册监听网络变化 创建intentFilter 并addAction 代表了监听哪个广播 然后使用registerReceiver()方法 将intentFilter 与 自己创建的监听器 传进去 ...

  2. JavaScript黑客是这样窃取比特币的,Vue开发者不用担心!

    如果你是JavaScript或者区块链开发者,如果你有关注区块链以及比特币,那么你应该听说了比特币钱包Copay被黑客攻击的事情.但是,你知道这是怎么回事吗? 总结 比特币钱包copay依赖event ...

  3. MongoDB复合索引详解

    摘要: 对于MongoDB的多键查询,创建复合索引可以有效提高性能. 什么是复合索引? 复合索引,即Compound Index,指的是将多个键组合到一起创建索引,这样可以加速匹配多个键的查询.不妨通 ...

  4. vim编辑器头部自动插入注释和shell的高亮显示

    1.基本语法 语法高亮 :syntax on/off 显示行号 set number/nonumber 自动缩进 set autoindent set cindent 2.自动加入文件头 在etc/v ...

  5. 洛谷P4213 Sum(杜教筛)

    题目描述 给定一个正整数N(N\le2^{31}-1)N(N≤231−1) 求ans_1=\sum_{i=1}^n\phi(i),ans_2=\sum_{i=1}^n \mu(i)ans1​=∑i=1 ...

  6. Jedis 简单案例

    POM 依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> < ...

  7. Scrapy代码实战

    1.Spider爬虫代码 # -*- coding: utf-8 -*- import scrapy from yszd.items import YszdItem class YszdSpiderS ...

  8. 根据标签中动态获取的值绑定特定的class

    数据有mock数据获取 mock文件: index文件: 引入文件index: 获取数据函数: 根据获取的标签内容给定不同的样式:

  9. sql server 计算两个时间 相差的 几天几时几分几秒

    CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) / ( 60 * 60 * 24 ) AS INT ) AS VARCHAR ) + '天 ...

  10. IPerf——网络测试工具介绍与源码解析(2)

    对于IPerf源码解析,我是基于2.0.5版本在Windows下执行的情况进行分析的,提倡开始先通过对源码的简单修改使其能够在本地编译器运行起来,这样可以打印输出一些中间信息,对于理解源码的逻辑,程序 ...