为更方便的进行数据库操作
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>