gistfile1.txt package tools;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.
gistfile1.txt
package tools;
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 bean.Users;
/**
* @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
>(); } //select s.id users_id,users_name,users_pwd,roles_id,roles_name,users_roleid from users s,roles r where s.roleid=r.id private static Connection conn; //当前连接对象 private static final String name="C##LJY"; //用户名 private static final String pwd="123"; //密码 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