DbutilHelper

为更方便的进行数据库操作

package com.gg.core.dbutil;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.apache.log4j.Logger;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2015/1/10.
 */
public class DbutilHelper {
    private static Logger logger = Logger.getLogger(DbutilHelper.class);

    private static Connection conn = null;
    private static String url = "jdbc:mysql://192.168.1.124:3306/hunqing?useUnicode=true&characterEncoding=UTF-8";
    private static String jdbcDriver = "com.mysql.jdbc.Driver";
    private static String user = "zhiqiao";
    private static  String password = "zhendebuxing($!";

    /**
     * 查询 支持?占位�?
     * @param sql
     * @param args
     * @return
     */
    public static List<Map<String,Object>> query(String sql,Object... args){
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            List<Map<String,Object>> results = (List<Map<String,Object>>) qr.query(conn, sql, new MapListHandler(),args);
            return results;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return null;
    }

    /**
     * 根据ID获取对象
     * @param tableName
     * @param id
     * @return
     */
    public static Map<String,Object> getObjectById(String tableName,int id){
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            String sql = "select * from "+tableName+" where id=?";
            List<Map<String,Object>> results = (List<Map<String,Object>>) qr.query(conn, sql, new MapListHandler(),id);
            logger.info(sql);
            return results.size()>0?results.get(0):null;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return null;
    }

    /**
     * 修改 支持占位�?
     * @param sql
     * @param args
     * @return 被更改的条数,如果更改失败返�-1
     */
    public static int update(String sql,Object... args){
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            return qr.update(conn,sql,args);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return -1;
    }

    /**
     * 根据ID来修�?
     * @param tableName
     * @param map
     * @param id
     * @return
     */
    public static int updateById(String tableName,Map<String,Object> map,int id){
        Map<String,String> rp = DbutilHelper.getClumonProperty(tableName);
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            StringBuffer sb = new StringBuffer("update ");
            sb.append(tableName);
            sb.append(" set ");
            for (String s : map.keySet()) {
                String type = rp.get(s);
                if(type.indexOf("char")>=0 || type.indexOf("text")>=0){
                    String str = (String) map.get(s);
                    str = str==null?"":str;
                    sb.append(s+"='"+str+"',");
                }else if(type.indexOf("datetime") >=0){
                    sb.append(s+"='"+map.get(s)+"',");
                }else{
                    sb.append(s+"="+map.get(s)+",");
                }
            }
            sb.deleteCharAt(sb.length()-1);
            sb.append(" where id=");
            sb.append(id);
            logger.info(sb.toString());
            return qr.update(conn,sb.toString());
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return -1;
    }

    /**
     * 插入数据
     * @param tableName
     * @param map
     * @return ID
     */
    public static Integer insertReturnId(String tableName,Map<String,Object> map){
        Map<String,String> rp = DbutilHelper.getClumonProperty(tableName);
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            StringBuffer sb = new StringBuffer("insert into "+tableName+"(");
            for (String s : map.keySet()) {
                sb.append(s+",");
            }
            sb.append("created_at,updated_at,is_delete) values(");
            for (String s : map.keySet()) {
                String type = rp.get(s);
                if(type.indexOf("char")>=0 || type.indexOf("text")>=0){
                    sb.append("'"+map.get(s)+"',");
                }else{
                    sb.append(map.get(s)+",");
                }
            }
            sb.append("now(),now(),0)");
            logger.info(sb.toString());
            qr.update(conn,sb.toString());

            Object oid = qr.query(conn, "SELECT LAST_INSERT_ID()", new ScalarHandler(1));
            int id = Integer.parseInt(oid.toString());
            return id;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return -1;
    }

    /**
     * 插入数据
     * @param tableName
     * @param map
     * @return 更新条数
     */
    public static Integer insert(String tableName,Map<String,Object> map){
        Map<String,String> rp = DbutilHelper.getClumonProperty(tableName);
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            StringBuffer sb = new StringBuffer("insert into "+tableName+"(");
            for (String s : map.keySet()) {
                sb.append(s+",");
            }
            sb.append("created_at,updated_at,is_delete) values(");
            for (String s : map.keySet()) {
                String type = rp.get(s);
                if(type.indexOf("char")>=0 || type.indexOf("text")>=0){
                    sb.append("'"+map.get(s)+"',");
                }else{
                    sb.append(map.get(s)+",");
                }
            }
            sb.append("now(),now(),0)");
            logger.info(sb.toString());
            return qr.update(conn,sb.toString());
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return -1;
    }

    /**
     * 删除
     * @param sql 原生态SQL
     * @param args
     * @return
     */
    public static int delete(String sql,Object... args){
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            return qr.update(conn,sql,args);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return -1;
    }

    /**
     * 删除
     * @param tableName
     * @param map
     * @return
     */
    public static int delete(String tableName,Map<String,Object> map){
        Map<String,String> rp = DbutilHelper.getClumonProperty(tableName);
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            StringBuffer sb = new StringBuffer("delete from "+tableName+" where ");
            for (String s : map.keySet()) {
                if(rp.get(s).indexOf("char")>=0){
                    sb.append(" "+s+"='"+map.get(s)+"' and");
                }else{
                    sb.append(" "+s+"="+map.get(s)+" and");
                }
            }
            int n = sb.length();
            sb.delete(n-3,n);
            logger.info(sb.toString());
            return qr.update(conn,sb.toString());
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return -1;
    }

    /**
     * 根据ID删除
     * @param tableName
     * @param id
     * @return
     */
    public static int deleteById(String tableName,int id){
        DbUtils.loadDriver(jdbcDriver);
        try {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();
            StringBuffer sb = new StringBuffer("delete from "+tableName+" where id="+id);
            logger.info(sb.toString());
            return qr.update(conn,sb.toString());
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return -1;
    }

    /**
     * 获取表格单元属�?
     * @param tableName
     * @return
     */
    public static Map<String,String> getClumonProperty(String tableName){
        List<Map<String,Object>> map = DbutilHelper.select("desc " + tableName);
        Map<String,String> result_map = new HashMap<String,String>();
        for (Map<String, Object> sm : map) {
            String cName = (String)sm.get("COLUMN_NAME");
            String cType =(String)sm.get("COLUMN_TYPE");
            result_map.put(cName,cType);
        }
        return result_map;
    }

    

}



maven:

<dependencies>
        <dependency>
            <groupId>commons-dbutils</groupId>
            <artifactId>commons-dbutils</artifactId>
            <version>1.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.30</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.2</version>
        </dependency>
    </dependencies>


你可能感兴趣的:(DbutilHelper)