`

Java自动生成insert,update语句

    博客分类:
  • Java
阅读更多
实体类 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,select语句

    首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2...

    Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作.docx

    "Java反射 JavaBean 对象自动生成插入、更新、删除、查询sql语句操作" Java反射JavaBean对象自动生成插入、更新、删除、查询sql语句操作是指通过Java反射机制,依据提供的表名、POJO类型、数据对象自动生成sql语句...

    java 代码生成器 能自动生成sql语句和dao

    1. SQL语句生成:代码生成器能够根据数据库表结构自动生成INSERT、UPDATE、DELETE和SELECT等SQL语句。这些SQL语句通常会遵循特定的模板,如MyBatis框架中的Mapper接口和XML配置文件。 2. DAO接口与实现类生成:基于...

    java 代码生成器 能自动生成sql语句和dao文件 方便实用

    代码生成器通常依据数据库的表结构自动生成对应的SQL语句,包括但不限于SELECT、INSERT、UPDATE和DELETE等操作。同时,它还会生成对应的DAO接口和实现类,提供执行SQL的方法。这样,开发者只需在业务层调用DAO方法,...

    mybatis自动sql生成插件源码

    1. **插入(Insert)**: 根据对象属性生成INSERT INTO语句,自动处理主键生成策略,如自增主键或UUID等。 2. **删除(Delete)**: 根据主键或唯一索引值生成DELETE FROM语句,确保数据的安全性。 3. **更新(Update...

    java自动生成model和mapper的工具

    自动生成的Mapper接口通常会包含对应表的所有基本操作,例如`selectById`、`insert`、`update`和`delete`等。 - 每个方法都与一个XML配置文件中的SQL语句相对应,这样可以将SQL逻辑与业务代码分离,保持代码的整洁...

    Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作

    Java反射 JavaBean 对象自动生成插入、更新、删除、查询 SQL 语句操作 Java 反射是 Java 语言中一个强大的功能,它允许开发者在运行时检查和修改类、方法、字段的行为。Java 反射机制可以动态地创建对象、调用方法...

    java 根据数据表实现增删改查代码自动生成

    在Java开发中,提高效率的一个重要手段是代码自动化生成,特别是在进行CRUD(Create、Read、Update、Delete)操作时。这个主题“java 根据数据表实现增删改查代码自动生成”主要关注如何利用Java工具或框架,根据...

    Java数据库代码自动生成工具

    自动生成的SQL语句可以根据数据库表的结构,为每张表生成对应的INSERT语句用于插入数据,SELECT语句用于查询数据,UPDATE语句用于更新数据,以及DELETE语句用于删除数据。这样,开发者无需手动编写复杂的SQL,只需...

    mybatis自动生成Java实体类和映射文件的自动生成类工具

    4. **生成Mapper接口**:同时,工具还会创建一个Mapper接口,接口中包含与表操作相关的CRUD方法,如selectById、insert、update和delete等。 5. **生成XML映射文件**:对于每个Mapper接口的方法,工具会生成相应的...

    可以自动生成sql语句的工具

    2. **反向工程**:根据数据库中的表结构,自动分析并生成SQL语句,包括但不限于SELECT, INSERT, UPDATE, DELETE等。 3. **代码生成**:除了SQL语句,这些工具还能生成对应的Java代码,如DAO(Data Access Object)...

    自动生成sql语句.rar

    这个压缩包“自动生成sql语句.rar”可能包含了一个或多个工具或框架,它们能够根据定义好的实体类自动生成对应的SQL语句,包括插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)等基本操作。...

    java使用mybits自动生成实体和dao层的工具.rar

    MBG会为每个表生成对应的Mapper XML文件,里面包含与数据库表相关的SQL语句,如SELECT、INSERT、UPDATE和DELETE。这些SQL语句可以直接在DAO接口中引用,通过MyBatis的动态SQL功能,开发者可以方便地进行复杂的查询和...

    java-生成单表完全动态查询

    在数据库中,单表查询是指只涉及一张表的SQL操作,如SELECT、INSERT、UPDATE、DELETE等。完全动态查询则意味着可以根据传入的参数动态生成SQL语句,而不是预先定义固定的查询方法。这种能力在处理复杂、灵活的查询...

    mysql数据库Insert语句后面加ON DUPLICATE KEY UPDATE,保证唯一性1

    在Java代码示例中,我们看到了一个工具类,用于根据输入的Bean对象生成`INSERT`语句。`getFieldMap()`和`setFieldMap()`方法用于获取和设置字段映射,而`getTablename()`和`setTablename()`用于获取和设置表名。`...

    使用java代码自动生成触发器

    在IT行业中,数据库触发器是一种重要的数据库对象,它可以在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句或存储过程。本话题将深入探讨如何使用Java代码来生成数据库触发器,使得...

    model自动生成对应crud sql语句

    它们会根据模型的属性生成INSERT、SELECT、UPDATE、DELETE语句,甚至更复杂的JOIN和子查询。 3. 工具支持:除了ORM库,还有一些专门的代码生成工具,如MyBatis Generator、DBDiffSync等,能够根据数据库表结构或者...

    java代码生成器

    生成器会根据数据库表结构自动生成SELECT、INSERT、UPDATE、DELETE等SQL语句,并定义结果集如何映射到Java实体类上。 Service类则封装了业务逻辑,调用DAO接口完成实际的数据操作。生成器会生成基本的CRUD(Create...

    mybatis自动生成语句XML版本

    在XML映射文件中,MBG会为每个数据库表生成插入(insert)、更新(update)、删除(delete)和查询(select)等基本操作的SQL语句。这些语句可以通过Mapper接口在业务逻辑中调用,大大简化了数据库操作。 总的来说...

    mybatis自动生成工具

    通过此工具,我们可以自动生成与数据库表结构相对应的XML文件,包括SELECT、INSERT、UPDATE、DELETE等基本操作,以及可能的复杂查询。这样,开发者只需关注SQL的具体实现,而无需为每个操作手动创建XML配置。 PO类...

Global site tag (gtag.js) - Google Analytics