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 }
原文地址:https://www.cnblogs.com/chuangjie1988/p/14694449.html