zoukankan      html  css  js  c++  java
  • 01MySqlUtils

      1 package edu.must.uh.util;
      2 
      3 import java.beans.BeanInfo;
      4 import java.beans.Introspector;
      5 import java.beans.PropertyDescriptor;
      6 import java.lang.reflect.Method;
      7 import java.sql.Connection;
      8 import java.sql.SQLException;
      9 import java.util.Date;
     10 import java.util.List;
     11 import java.util.Map;
     12 import org.apache.commons.dbutils.DbUtils;
     13 import org.apache.commons.dbutils.QueryRunner;
     14 import org.apache.commons.dbutils.handlers.BeanListHandler;
     15 import org.apache.commons.dbutils.handlers.MapListHandler;
     16 import org.apache.log4j.Logger;
     17 
     18 public class MySqlUtils {
     19     
     20     private static Logger logger = Logger.getLogger(MySqlUtils.class);
     21     
     22     public static <T> int save(String table,T bean) throws Exception {     
     23           
     24             String sql= getSaveSQL(table,bean);            
     25             System.out.println(sql);
     26             logger.info(sql);
     27             QueryRunner qr = new QueryRunner();  
     28             //调用QueryRunner方法update
     29             Connection conn = MysqlManager.getConnection();
     30             int row = qr.update(conn, sql);
     31             System.out.printf("已经有[%d]发生了改变",row);
     32             DbUtils.closeQuietly(conn);
     33             return row;
     34     }
     35     
     36     
     37     public static int disOrEnAble(String table,String enabledMark,String keyFields,String keyValue)throws SQLException{
     38         String sql=  "UPDATE "+ table+ "SET EnabledMark = "+enabledMark+" WHERE "+ keyFields + "= '"+keyValue+"'";
     39         System.out.println(sql);      
     40         logger.info(sql);
     41         QueryRunner qr = new QueryRunner();        
     42         Connection conn = MysqlManager.getConnection();
     43         int row = qr.update(conn, sql);
     44         System.out.printf("已经有[%d]发生了改变",row);     
     45         DbUtils.closeQuietly(conn);
     46         return row;
     47     }    
     48 
     49     
     50     
     51     public static int delete(String table,String keyFields,String keyValue)throws SQLException{
     52         String sql=  "UPDATE "+ table+ "SET DeleteMark = 1 WHERE "+ keyFields + "= '"+keyValue+"'";
     53         System.out.println(sql);      
     54         logger.info(sql);
     55         QueryRunner qr = new QueryRunner();        
     56         Connection conn = MysqlManager.getConnection();
     57         int row = qr.update(conn, sql);
     58         System.out.printf("已经有[%d]发生了改变",row);     
     59         DbUtils.closeQuietly(conn);
     60         return row;
     61     }
     62     
     63     public static int deleteTrue(String table,String keyFields,String keyValue)throws SQLException{
     64         String sql=  "DELETE FROM "+ table+ " WHERE "+ keyFields + "= '"+keyValue+"'";
     65         System.out.println(sql);      
     66         logger.info(sql);
     67         QueryRunner qr = new QueryRunner();        
     68         Connection conn = MysqlManager.getConnection();
     69         int row = qr.update(conn, sql);
     70         System.out.printf("已经有[%d]发生了改变",row);     
     71         DbUtils.closeQuietly(conn);
     72         return row;
     73     }
     74     
     75     private static String getUpdateSQL(String table,Object obj) throws Exception {
     76         StringBuilder  sqlString = new StringBuilder();
     77         BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
     78         PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
     79         for (PropertyDescriptor property : propertyDescriptors) {
     80             String fieldName = property.getName();
     81             String key = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);            
     82             Method getter = property.getReadMethod();
     83             Object valueObject = getter.invoke(obj); 
     84             if(key.toUpperCase().equals("CLASS")) {
     85                 continue;
     86             }
     87             if(valueObject !=null) {               
     88                 if(property.getPropertyType() == java.util.Date.class) {
     89                     valueObject = ToolsOfDate.toYYYYMMDDHHMISS((Date)valueObject);
     90                 }
     91                 sqlString.append( key+" = '"+ valueObject +"',");               
     92             }
     93         }
     94         return sqlString.deleteCharAt(sqlString.length()-1).toString() ;
     95     }
     96     /*
     97      *  定义方法,使用QueryRunner类的方法update将数据表的数据修改
     98      */
     99     public static <T> int update(String table,T bean,String keyFields,String keyValue)throws Exception{
    100         
    101         String updateFieldString = getUpdateSQL(table,bean);
    102         String sql=  "UPDATE "+ table+ " SET "+updateFieldString+" WHERE "+ keyFields + "= '"+keyValue+"'";
    103         System.out.println(sql);
    104         logger.info(sql);
    105         //创建QueryRunner类对象
    106         QueryRunner qr = new QueryRunner(); 
    107         //调用QueryRunner方法update
    108         Connection conn = MysqlManager.getConnection();
    109         int row = qr.update(conn, sql);
    110         System.out.printf("已经有[%d]发生了改变",row);
    111         DbUtils.closeQuietly(conn);        
    112         return row;
    113     }
    114     
    115     public static  Integer update(String sql) throws Exception {
    116         QueryRunner qr = new QueryRunner(); 
    117         //调用QueryRunner方法update
    118         Connection conn = MysqlManager.getConnection();
    119         int row = qr.update(conn, sql);
    120         System.out.printf("已经有[%d]发生了改变",row);
    121         DbUtils.closeQuietly(conn);        
    122         return row;
    123        
    124     }
    125     
    126     
    127     //INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
    128     private  static String getSaveSQL(String table,Object obj) throws Exception {
    129         StringBuilder  sqlString = new StringBuilder();
    130         StringBuilder  keyString = new StringBuilder();
    131         keyString.append(" ( ");
    132         StringBuilder  valString = new StringBuilder();
    133         valString.append(" ( ");
    134         sqlString.append("INSERT INTO " + table);
    135         BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
    136         PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    137         for (PropertyDescriptor property : propertyDescriptors) {
    138             String fieldName = property.getName();
    139             String key = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);            
    140             Method getter = property.getReadMethod();
    141             Object valueObject = getter.invoke(obj); 
    142             if(key.toUpperCase().equals("CLASS")) {
    143                 continue;
    144             }
    145             if(valueObject !=null) {
    146                 keyString.append( key+",");
    147                 if(property.getPropertyType() == java.util.Date.class) {
    148                     valueObject = ToolsOfDate.toYYYYMMDDHHMISS((Date)valueObject);
    149                 }
    150                 valString.append("'"+ valueObject +"',");
    151             }
    152         }
    153         return sqlString.toString() + keyString.deleteCharAt(keyString.length()-1).append(")").toString()+"VALUES"+ valString.deleteCharAt(valString.length()-1).append(")").toString();
    154     }
    155     
    156     
    157     /*
    158      *  结果集第八种处理方法,MapListHandler
    159      *  将结果集每一行存储到Map集合,键:列名,值:数据
    160      *  Map集合过多,存储到List集合
    161      */
    162     public static List<Map<String,Object>> getlist(String sql)throws SQLException{
    163         QueryRunner qr = new QueryRunner();   
    164         System.out.printf(sql);
    165         logger.info(sql);
    166         //调用方法query,传递结果集实现类MapListHandler
    167         //返回值List集合, 存储的是Map集合 
    168         Connection conn = MysqlManager.getConnection();
    169         List<Map<String,Object>> list = qr.query(conn, sql, new MapListHandler()); 
    170         DbUtils.closeQuietly(conn);
    171         return list;       
    172         
    173     }
    174     
    175     public static <T> List<T>  getlist(String sql, Class<T> oclass) throws Exception {       
    176       
    177         QueryRunner qr = new QueryRunner(); 
    178         logger.info(sql);
    179         T beanT = oclass.newInstance();
    180         Connection conn = MysqlManager.getConnection();
    181         List<T> list = qr.query(sql, new BeanListHandler<T>((Class<? extends T>) beanT.getClass()));
    182         DbUtils.closeQuietly(conn);
    183         return list;
    184     }
    185    
    186 
    187 }
  • 相关阅读:
    《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)--宋宝华
    WebApp 安全风险与防护课堂开课了!
    2019 Vue开发指南:你都需要学点啥?
    每个程序员都该学习的5种开发语言
    每个Web开发者都该了解的12条命令行
    Webpack 4教程
    都 9012了,该选择 Angular、React,还是Vue?
    在 Angular 8 中,我们可以期待些什么
    “宇宙最强” IDE,Visual Studio 2019 正式发布
    Webpack 4教程
  • 原文地址:https://www.cnblogs.com/chuangjie1988/p/14694449.html
Copyright © 2011-2022 走看看