根据JavaBean创建数据库的操作SQL
根据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的更多相关文章
- 使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本
打开PD软件: 1.新建概念模型(conceptual Data Model) File-->New Model-->Conceptual Data Mode 或者点击工作区,右键--&g ...
- MySQL数据库-表操作-SQL语句(一)
1. 数据库操作与存储引擎 1.1 数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...
- MySQL数据库-表操作-SQL语句(二)
1. MySQL多表查询 1.1 外键约束 为了消除多张表查询出现的笛卡尔积的现象,MySQL在建表并进行多表之间的关键查询可以使用外键关联查询. 外键:从表1(sub)的某列引用(ref)另外一个表 ...
- 创建数据库指定路径sql
create database stuDB on primary -- 默认就属于primary文件组,可省略(/*--数据文件的具体描述--*/ name='stuDB_data', - ...
- 创建数据库表的SQL语句
创建表.视图.索引的sql语句如下: CREAT TABLE (列名,数据类型,约束) create view(创建视图) create index (创建索引) 1.primary key(主键) ...
- 数据库常用操作SQL语句
禁用触发器: alter table tb disable trigger tir_name 启用触发器: alter table tb enable trigger tir_name
- 使用交互式方式在SQL server2017上创建数据库
软件基础:在电脑上提前安装好SQL server2017,并且安装好其中的SSMS(SQL server Management Studio) 创建方式:交互式 操作内容:创建学生课程数据库系统 步骤 ...
- SQL数据库简单操作
sql语言简介 (1)数据库是文件系统,使用标准sql对数据库进行操作 * 标准sql,在mysql里面使用语句,在oracle.db2都可以使用这个语句 (2)什么是sql * Structured ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
随机推荐
- webpack4 系列教程(十一):字体文件处理
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十一):字体文件处理>原文地址.或者来我的小站看更多内容:godbmw.com 0. 课程介 ...
- 汇编语言--微机CPU的指令系统(五)(比较运算指令)
(7)比较运算指令 在程序中,我们要时常根据某个变量或表达式的取值去执行不同指令,从而使程序表现出有不同的功能.为了配合这样的操作,在CPU的指令系统中提供了各种不同的比较指令.通过这些比较指令的执行 ...
- a dive in react lifecycle
背景:我在react文档里找生命周期的图,居然没有,不敢相信我是在推特上找到的... 正文 react v16.3 新生命周期: static getDerivedStateFromProps get ...
- 13 ,CSS 入门基础,行内排版内嵌式排版和外部排版样式
1.认识 CSS 2.传统 HTML 设计网页版面的缺点 3.CSS 的特点 4.CSS 的排版样式 13.1 认识CSS CSS的英文全名是 Cascading Style Sheets,中文可翻译 ...
- [HTML/CSS]浮动的那点事儿
元素是怎样浮动 元素的水平方向浮动,意味着元素只能左右移动而不能上下移动. 一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 浮动元素之后的元素将围绕它. 浮动元素 ...
- python里文件读写操作
文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...
- Shell中判断语句if中-z至-d的意思
[ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ ...
- Android为TV端助力 关于线程的那些事
今天发现之前自己一直有个误区,new Runnable(run()方法){}原来它不是一定创建一个线程 如果用主线程的handler去post(Runnable),他就不会创建子线程,而是在主线程上执 ...
- F5负载的应用IIS日志记录的不是真实IP的处理方法
如果没有这一项,在服务里添加上 将F5XForwardedFor.dll拷贝到应用目录下 添加筛选器: 名称:F5XForwardedFor 可执行文件:F5XForwardedFor.dll所在的目 ...
- Android 源码编译之旅
目录 前言 背景 安装软件 正文 Mac 分区 移动硬盘分区 Repo 下载源码 编译 源码导入 Android Studio 查看 碰到的问题 Could not find a supported ...