通用增删改查方法

1.增删改通用的方法

传入SQL语句和SQL占位符

public static Boolean adu(String sql ,Object ...objs) {
        Boolean f =false;
        try {
            Connection con=DBUtil.getconnection();
            PreparedStatement pst=con.prepareStatement(sql);
            for (int i=0;i<objs.length;i++) {
                pst.setObject((i+1), objs[i]);
            }
            int n=pst.executeUpdate();
            f=n>0;
        } catch (SQLException e) {
            // TODO Auto-generated catch block//异常处理
            e.printStackTrace();
        }
        finally {
            DBUtil.closeAll(null, pst, con);
        }
        return f;
    }

2.查询通用的方法

传入查询的类,SQL语句和SQL占位符

public static <T> T comSelect(Class<T> clazz, String sql, Object... args) {

        T entity = null;

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            // 获取resultSet
            connection = DBUtil.getconnection();
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < args.length; i++) {
                preparedStatement.setObject(i + 1, args[i]);
            }
            resultSet = preparedStatement.executeQuery();
            // 获取resultSetMetaData
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            // 创建一个MAP 键 :SQL查询得到的列的别名,别名和javaBean的属性名对应 值:对应列的值
            Map<String, Object> values = new HashMap<String, Object>();

            // 处理结果集,利用resultSetMetaData填充Map
            while (resultSet.next()) {
                for (int i = 0; i < resultSetMetaData.getColumnCount(); i++) {
                    String columnLable = resultSetMetaData
                            .getColumnLabel(i + 1);
                    Object columnValue = resultSet.getObject(i + 1);

                    values.put(columnLable, columnValue);
                }
            }

            // 如果map不为空,利用反射创建对象
            if (values.size() > 0) {
                // 反射创建对象
                entity = clazz.newInstance();
                // 遍历Map ,利用反射为属性赋值
                for (Map.Entry<String, Object> entry : values.entrySet()) {
                    String fieldName = entry.getKey();
                    Object value = null;
                    // 因为java中和mysql中数据类型对应不一致
                    // mysql中int对应JAVA中的long,所以当查询出int型数据的时候需要转换
                    if (entry.getValue() instanceof Long) {
                        value = Integer.parseInt(entry.getValue().toString());
                    } else {
                        value = entry.getValue();
                    }
                    // ReflectionUtils.setFieldValue(entity, fieldName, value);
                    Field field = clazz.getDeclaredField(fieldName);
                    field.setAccessible(true);
                    field.set(entity, value);
                }

            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();

        }
        return entity;
    }
时间: 2024-12-19 09:47:59

通用增删改查方法的相关文章

用DBContext (EF) 实现通用增删改查的REST方法

我们用ADO.NET Entity Data Model来生成实体类后,一般都会对这些类进行基本的增删改查操作,如果每个类都要写这些基本的方法,实在太乏味了.下面就是通过step by step的方式介绍如何用DBContext来实现通用增删改查的REST方法,以及实现过程中容易出现的问题. 1. 打开vs2012,新建一个class library的项目 2. 新加一个ADO.NET Entity Data Model项到这个项目 3. 打开App.Config, 修改res://* 为res

通用mapper的增删改查方法 留存 备忘

Mybatis通用Mapper介绍与使用 前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL.而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改.这工作量和效率的影响或许就是区别增删改查程序员和真正程序员的屏障.这时,通用Mapper便应运而生-- 什么是通用Mapper 通用Mapper就是为了解决单表增删改查,基于Mybatis的插件.开发人员不需要编写SQL,不需要在DA

EF学习笔记——通用增删改查方案

http://blog.csdn.net/leftfist/article/details/25005307 我刚接触EF未久,还不知道它有什么强大之处,但看上去,EF提供了一般的增删改查功能.以往用过一些ORM方法,尽管有代码生成器,但代码量总的 来说比较多.这次采用EF,我就想,能不能尽量写出一些通用的方法,以后添加表.实体类,只需做很少的改动,就能拥有基本的增删改查功能呢? 方案如下: 1. 分为几个部分:BLL.DAL.Model.Interface.其中,EF生成的代码放在Model.

赵雅智_使用SQLiteDatabase提供的增删改查方法及事务

知识点详解:http://blog.csdn.net/zhaoyazhi2129/article/details/9026093 MainActivity.java,User.java,BaseDao.java,UserDao.java同上篇 http://blog.csdn.net/zhaoyazhi2129/article/details/28640195 UserDaoImple.java package com.example.android_sqlite.dao.impl; impor

封装HibernateUtil(静态单例模式)和增删改查方法

封装HibernateUtil import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { //定义常量是为了实现单例,不让随便new //ThreadLocal<Session>不是集合,是线程锁,为了单线程安全 private static final ThreadLocal<

PHP历程(封装的增删改查方法)

db.class.php   主要方法 <?php /** * 数据库配置信息 */ define('DB_HOST','127.0.0.1'); //服务器 define('DB_USER','root'); //数据库用户名 define('DB_PASSWORD','123456'); //数据库密码 define('DB_NAME','TEST'); //默认数据库 define('DB_CHARSET','utf8'); //数据库字符集 define('TIMEZONE',"P

Android学习笔记之SQLite数据库的使用及常用的增删改查方法、无sql语句的DRUD方法汇总

(1)目录结构如下: (2)链接数据库的文件:DBHelper.java要继承SQLiteOpenHelper类 package com.lc.sqlite_demo1.db; import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLit

CodeSmith生成的增删改查方法模板源码分享

我是个懒人,喜欢用最少的精力去做更多的事.每每做项目和写一些demo的时候,增删改查都少不了,这些功能写多了就觉得太浪费精力时间,所以就写了个模板,让自己从重复的代码中解放出来. 个人不太会构架,所以模板就是生成一个三层架构,有dal.bll.和model层的项目.对应的数据库是SQL Server 下载链接:https://github.com/lzjluoze/-CodeSmith-/tree/master/NetCms-v1.0 生成演示: 说明:

ADO.NET— 数据库增删改查方法的编写

Command对象 作用:向数据库发送SQL语句 封装"连接对象"和要执行的"SQL语句" 对数据库执行具体操作,提供"增.删.改.查"的方法 属性 CommandText:需要封装的sql语句或者存储过程名称 Connection:Command对象使用的数据库连接对象 方法 ExecuteNonQUery();    执行增.删.改操作 ExecuteScalar();     返回单一结果的查询 ExecuteReader();   返回只