功能说明
将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企服之家,中国第一个企服评测及商务社交产业平台。 |