可以根据类,查询出数据库中对应类的对象 /**自己自己写的通用工具类*/package org.tlgg.utils;import java.lang.annotation.Annotation;import java.lang.reflect.AnnotatedElement;import java.lang.reflect.Constructor;imp
可以根据类,查询出数据库中对应类的对象
/**自己自己写的通用工具类*/
package org.tlgg.utils;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.tlgg.bean.Roles;
/**
* @author 今晚打老虎
* @see 一个关于数据库访问的简单封装
* @see 当前版本需要注意以下几点: * @see 1、需要数据库的表名和列名与实体类的类名和字段名保持一直 * @see 2、多表联查暂时没有进行封装,下个版本迭代升级 * @see 3、级联删除、添加、修改暂时没有实现 * @see 4、根据任意SQL语句生成实体类 * @see 5、暂时无任何数据和SQL语句缓存 * */ @SuppressWarnings("all") public class DBTools { //临时数据表(实体类) public class DataTable{ List
columns=new ArrayList
(); List
> rows=new ArrayList
>(); } private static Connection conn; //当前连接对象 private static final String name="C##admin"; //用户名 private static final String pwd="123456"; //密码 private static final String envName="aaa"; //JNDI名,tomcat配置的连接池名称 private static final boolean isPool=false; //是否使用连接池(如果需要使用连接池,请在web环境测试) private static Context ctx=null; //创建容器对象 private static DataSource ds=null; //容器中取出Datasource数据源 private static ThreadLocal
tl; //线程资源绑定 /**初始化资源*/ static{ try { if (isPool) { ctx = new InitialContext(); ds=(DataSource)ctx.lookup("java:comp/env/"+envName); }else Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NamingException e) { e.printStackTrace(); } } /**获取连接方法(如果被多线程并发访问,此处的连接会不安全,请使用ThreadLocal对象)*/ private static Connection getConnection(){ try { if (isPool) conn=ds.getConnection(); else conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl",name,pwd); } catch (SQLException e) { e.printStackTrace(); } return conn; } /**插入对象*/ public static
int insertOjbect(T t){ int i=0; try { //列名集合 List
columns=new ArrayList
(); //列的值集合 List