实体类 User:
public class User {
private String id;
private String username;
private String password;
public String getUsername() {
return username;
}
/**
* getter,setter.....
*/
}
自动生成sql类:GenerateSql_Util
/****
* INSERT INTO table(field1,field2) VALUES('value1','value2');
* @param obj 传入要生成的实体,需与数据库表的字段一致
* @return 拼成的insert 语句
*/
public static String getSqlInset(Object obj) {
try {
Class<? extends Object> c = obj.getClass();
//获取所有的字段
Field[] fields = c.getDeclaredFields();
//获取实体的类名,需与表名一致
String tableName = c.getSimpleName();
//生成INSERT INTO table(field1,field2) 部分
StringBuffer sbField = new StringBuffer();
//生成VALUES('value1','value2') 部分
StringBuffer sbValue = new StringBuffer();
sbField.append("INSERT INTO " + tableName.toLowerCase() + "(");
int fieldLength = fields.length;
for(int i=0;i<fieldLength;i++){
fields[i].setAccessible(true);
sbField.append(fields[i].getName().toLowerCase()+',');
sbValue.append("'"+fields[i].get(obj).toString() +"',");
}
return sbField.replace(sbField.length()-1, sbField.length(), ") VALUES(").append(sbValue.replace(sbValue.length()-1, sbValue.length(), ");")).toString();
} catch (IllegalAccessException e1) {
e1.printStackTrace();
}
return null;
}
public static String getSqlUpdate(Object obj) {
try {
Field[] fields = obj.getClass().getDeclaredFields();
String tableName = obj.getClass().getSimpleName();
StringBuffer sb = new StringBuffer();
sb.append("UPDATE "+ tableName.toLowerCase() +" SET ");
int fieldLength = fields.length;
for(int i=0;i<fieldLength;i++){
fields[i].setAccessible(true);
sb.append(fields[i].getName() + " = '" + fields[i].get(obj) +"',");
}
return sb.replace(sb.length()-1, sb.length(), " ").toString();
} catch (IllegalAccessException e1) {
e1.printStackTrace();
}
return null;
}
测试代码:注意update的需要加上where条件
public class test {
public static void main(String[] args) {
User u = new User();
u.setId("1");
u.setUsername("u1");
u.setPassword("p1");
System.out.println(GenerateSql_Util.getSqlInsert(u));
String updateSql = GenerateSql_Util.getSqlUpdate(u) + " WHERE id = '"+ u.getId()+"';";
System.out.println(updateSql);
}
}
结果:
INSERT INTO user(id,username,password) VALUES('1','u1','p1');
UPDATE user SET id = '1',username = 'u1',password = 'p1' WHERE id = '1';
分享到:
相关推荐
首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2...
"Java反射 JavaBean 对象自动生成插入、更新、删除、查询sql语句操作" Java反射JavaBean对象自动生成插入、更新、删除、查询sql语句操作是指通过Java反射机制,依据提供的表名、POJO类型、数据对象自动生成sql语句...
1. SQL语句生成:代码生成器能够根据数据库表结构自动生成INSERT、UPDATE、DELETE和SELECT等SQL语句。这些SQL语句通常会遵循特定的模板,如MyBatis框架中的Mapper接口和XML配置文件。 2. DAO接口与实现类生成:基于...
代码生成器通常依据数据库的表结构自动生成对应的SQL语句,包括但不限于SELECT、INSERT、UPDATE和DELETE等操作。同时,它还会生成对应的DAO接口和实现类,提供执行SQL的方法。这样,开发者只需在业务层调用DAO方法,...
1. **插入(Insert)**: 根据对象属性生成INSERT INTO语句,自动处理主键生成策略,如自增主键或UUID等。 2. **删除(Delete)**: 根据主键或唯一索引值生成DELETE FROM语句,确保数据的安全性。 3. **更新(Update...
自动生成的Mapper接口通常会包含对应表的所有基本操作,例如`selectById`、`insert`、`update`和`delete`等。 - 每个方法都与一个XML配置文件中的SQL语句相对应,这样可以将SQL逻辑与业务代码分离,保持代码的整洁...
Java反射 JavaBean 对象自动生成插入、更新、删除、查询 SQL 语句操作 Java 反射是 Java 语言中一个强大的功能,它允许开发者在运行时检查和修改类、方法、字段的行为。Java 反射机制可以动态地创建对象、调用方法...
在Java开发中,提高效率的一个重要手段是代码自动化生成,特别是在进行CRUD(Create、Read、Update、Delete)操作时。这个主题“java 根据数据表实现增删改查代码自动生成”主要关注如何利用Java工具或框架,根据...
自动生成的SQL语句可以根据数据库表的结构,为每张表生成对应的INSERT语句用于插入数据,SELECT语句用于查询数据,UPDATE语句用于更新数据,以及DELETE语句用于删除数据。这样,开发者无需手动编写复杂的SQL,只需...
4. **生成Mapper接口**:同时,工具还会创建一个Mapper接口,接口中包含与表操作相关的CRUD方法,如selectById、insert、update和delete等。 5. **生成XML映射文件**:对于每个Mapper接口的方法,工具会生成相应的...
2. **反向工程**:根据数据库中的表结构,自动分析并生成SQL语句,包括但不限于SELECT, INSERT, UPDATE, DELETE等。 3. **代码生成**:除了SQL语句,这些工具还能生成对应的Java代码,如DAO(Data Access Object)...
这个压缩包“自动生成sql语句.rar”可能包含了一个或多个工具或框架,它们能够根据定义好的实体类自动生成对应的SQL语句,包括插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)等基本操作。...
MBG会为每个表生成对应的Mapper XML文件,里面包含与数据库表相关的SQL语句,如SELECT、INSERT、UPDATE和DELETE。这些SQL语句可以直接在DAO接口中引用,通过MyBatis的动态SQL功能,开发者可以方便地进行复杂的查询和...
在数据库中,单表查询是指只涉及一张表的SQL操作,如SELECT、INSERT、UPDATE、DELETE等。完全动态查询则意味着可以根据传入的参数动态生成SQL语句,而不是预先定义固定的查询方法。这种能力在处理复杂、灵活的查询...
在Java代码示例中,我们看到了一个工具类,用于根据输入的Bean对象生成`INSERT`语句。`getFieldMap()`和`setFieldMap()`方法用于获取和设置字段映射,而`getTablename()`和`setTablename()`用于获取和设置表名。`...
在IT行业中,数据库触发器是一种重要的数据库对象,它可以在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句或存储过程。本话题将深入探讨如何使用Java代码来生成数据库触发器,使得...
它们会根据模型的属性生成INSERT、SELECT、UPDATE、DELETE语句,甚至更复杂的JOIN和子查询。 3. 工具支持:除了ORM库,还有一些专门的代码生成工具,如MyBatis Generator、DBDiffSync等,能够根据数据库表结构或者...
生成器会根据数据库表结构自动生成SELECT、INSERT、UPDATE、DELETE等SQL语句,并定义结果集如何映射到Java实体类上。 Service类则封装了业务逻辑,调用DAO接口完成实际的数据操作。生成器会生成基本的CRUD(Create...
在XML映射文件中,MBG会为每个数据库表生成插入(insert)、更新(update)、删除(delete)和查询(select)等基本操作的SQL语句。这些语句可以通过Mapper接口在业务逻辑中调用,大大简化了数据库操作。 总的来说...
通过此工具,我们可以自动生成与数据库表结构相对应的XML文件,包括SELECT、INSERT、UPDATE、DELETE等基本操作,以及可能的复杂查询。这样,开发者只需关注SQL的具体实现,而无需为每个操作手动创建XML配置。 PO类...