Java自动生成insert,update语句

实体类 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';
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值