BaseDao(反射)
来源:互联网 发布:淘宝男装代理一手货源 编辑:程序博客网 时间:2024/05/22 00:26
不解释,直接上代码:
package com.kyxm.dao.impl;import java.lang.reflect.Field;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;/** * * @author author * * @date 2017-4-21 * * @connect database */public class BaseDao {private final static String DRIVER = "com.mysql.jdbc.Driver";private final static String URL = "jdbc:mysql://localhost:3306/yc_kygl_test";private static final String USER = "root";private static final String PASS = "123"; static {try {Class.forName(DRIVER);//加载驱动} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConn() {Connection conn = null;try {conn = DriverManager.getConnection(URL, USER, PASS);//获取连接} catch (SQLException e) {e.printStackTrace();}return conn;}//更新操作public boolean operUpdate(String sql, List<Object> p) {Connection conn = null;PreparedStatement pste = null;int res = 0;conn = getConn();try {pste = conn.prepareStatement(sql);if(p != null) {for(int i = 0; i < p.size(); i++) {pste.setObject(i+1, p.get(i));}}res = pste.executeUpdate();//} catch (SQLException e) {e.printStackTrace();} finally {releaseAll(null, pste, conn);}return res > 0;//0则失�?}//查询操作public <T> List<T> operQuery(String sql, List<Object> p, Class<T> cls) throws Exception{Connection conn = null;PreparedStatement pste = null;ResultSet rs = null;List<T> list = new ArrayList<T>();conn = getConn();try {pste = conn.prepareStatement(sql);if(p != null) {for(int i = 0; i <p.size(); i++) {pste.setObject(i+1, p.get(i));}}rs = pste.executeQuery();ResultSetMetaData rsmd = rs.getMetaData();while(rs.next()) {T m = cls.newInstance();for(int j = 0; j < rsmd.getColumnCount(); j++) {//从数据库中取得字段名String col_name = rsmd.getColumnName(j+1);Object value = rs.getObject(col_name);//构建属性名 ps:company_id——>companyIdString fildName = null;StringBuffer sb = new StringBuffer();String names[] = col_name.split("_");for(int i = 0;i < names.length;i ++){if(i==0){sb.append(names[i]);}else{//将字符串"_"后一位变为大写sb.append(names[i].substring(0, 1).toUpperCase()+names[i].substring(1));}}fildName = sb.toString();Field field = cls.getDeclaredField(fildName);field.setAccessible(true);field.set(m, value);}list.add(m);}} catch (SQLException e) {e.printStackTrace();} finally {releaseAll(rs,pste,conn);}return list;}//关闭连接,释放资源private void releaseAll(ResultSet res, PreparedStatement pste, Connection conn) {try {if(res != null) res.close();if(pste != null) pste.close();if(conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}
1 0
- BaseDao(反射)
- BaseDAO(反射泛型)
- basedao 反射
- 利用反射实现BaseDao
- 利用反射来设计BaseDao
- SpringMvc+Jdbc泛型反射BaseDao
- 增强版basedao java 反射和映射
- BaseDAO
- basedao
- BaseDao
- baseDao
- BaseDao
- BaseDao
- BaseDAO
- BaseDao
- BaseDao
- BaseDao
- BaseDao
- [PlantSimulation]Mobile Units
- 项目分类表
- 浅析python中@装饰器的作用
- Hibernate4.3.11 如何去掉红色的日志文字
- MyEclipse常用快捷键
- BaseDao(反射)
- javaScript语言----对象
- mysql中间件研究(Atlas,cobar,TDDL)(转)
- c3p0和dbcp连接池解析
- Permutation in String
- 取得客户端的ip、地理信息、浏览器、本地真实IP
- [Android7.0]NFC初始化的流程分析
- mysql再探
- C++11多线程