IT评测·应用市场-qidao123.com
标题:
Java学习:Java Bean 自动生成 INSERT SQL 及 JDBC 操作优化
[打印本页]
作者:
数据人与超自然意识
时间:
2025-3-24 10:42
标题:
Java学习:Java Bean 自动生成 INSERT SQL 及 JDBC 操作优化
功能说明
将Java Bean类转换为标准的INSERT SQL语句模板,支持:
自动转换驼峰命名 → 下划线命名
动态适配全部字段
生成参数占位符(?)
public static String generateInsert(Class<?> beanClass){
//基础结构初始化
StringBuilder sql = new StringBuilder("insert into ");
//表名转换
String tableName = convertToSnake(beanClass.getSimpleName());
sql.append(tableName).append("(");
//Bean 对象中的所有字段 - 注意:Bean对象的字段与数据表的字段————对应
Field[] declaredFields = beanClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
sql.append(convertToSnake(declaredField.getName())).append(",");
}
//去除最后一个逗号
sql.deleteCharAt(sql.length()-1);
sql.append(") values (");
//参数占位符生成
for (int i = 0; i < declaredFields.length; i++) {
sql.append("?").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(")");
return sql.toString();
}
复制代码
自动生成添加SQL,并实现JDBC 添加操作
public static int insert(Object model){
int row = 0;
String sql = SqlGenerate.generateInsert(model.getClass());
Connection connection = DruidUtil.getConnection();
PreparedStatement pst = null;
try {
pst = connection.prepareStatement(sql);
//第四:填充数据
//1.获取Bean对象的 Class对象
Class<?> clazz = model.getClass();
//2.获取Bean对象的所有字段
Field[] fields = clazz.getDeclaredFields();
//3.循环遍历所有的字段,读取字段数据,并填充占位符
for (int i = 0; i < fields.length; i++) {
fields[i].setAccessible(true);
//3.1)获取当前遍历字段的数据
Object currentFieldData = fields[i].get(model);
//3.2)填充占位符
pst.setObject(i + 1,currentFieldData);
}
//第五:执行SQL语句
row = pst.executeUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
}
return row;
}
复制代码
测试效果:
// 第一:定义一个员工对象,并初始化相关的信息
Staffs staff = new Staffs();
staff.setId(6);
staff.setName("王八");
staff.setAge(22);
staff.setPhone("110");
staff.setStaPos("项目经理");
staff.setAddTime(LocalDateTime.now());
staff.setUpdateTime(LocalDateTime.now());
System.out.println(DbUtil.insert(staff));
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4