javaEE(DBUtils和ThreadLocal)
程序员文章站
2022-06-23 19:38:48
...
DBUtils
apache公司做的,是java编程中数据库操作的实用工具,小巧简单实用。
DBUtils封装了对JDBC的操作
1.对数据表的读操作,他可以把结果转换成List,Array,Set等
2.对数据表的写操作(只需要sql语句)
3.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能,
DBUtils三个核心对象
QueryRunner类(增删改查)
query()
执行select
update()
执行insert update delete
batch()
批处理
ResultSetHandler接口(处理结果封装)
用于定义select操作后,怎样定义结果集
DBUtils类(针对close,事务操作等)
它就是个工具类,定义关闭资源与事务处理的方法
DBUtils使用步骤
1.添加commons-dbutils.jar包(如果使用连接池可以加上c3p0.jar)
2.查询(QUeryRunner(dateSource,true)代表oracle使用)
低级
QueryRunner qr=new QueryRunner("需要数据源,不是Connection");
qr.query("select * from XXX",new ResultSetHandler() {
//当query方法执行select语句后,将结果集以参数的形式传递过来
public ArrayList<User> handle(ResultSet rs) throws SQLException {
ArrayList<User> list = new ArrayList<User>();
while(rs.next()) {
User u=new User();
u.setId(rs.getInt(1));
list.add(u);
}
return list;
}
});
中级(ResultSetHandler有实现类,其中有Bea) QueryRunner qr=new QueryRunner("需要数据源,不是Connection");
List<User> query = qr.query("select * from XXX",new BeanListHandler<User>(User.class));
三个参数的query是qr.query("select * from XXX where id=? and name=?",new BeanListHandler<User>(User.class),1,"小明");
ThreadLocal
模拟ThreadLocal的设计。(使用目的:业务层需要开启事务,但是连接不是同一个连接,所以用需要同一个connection)
public class ThreadLocal{
private Map<Runnable,Object> container = newHashMap<Runnable,Object>();
public void set(Object value){
container.put(Thread.currentThread(),value);//用当前线程作为key
}
public Object get(){
return container.get(Thread.currentThread());
}
public void remove(){
container.remove(Thread.currentThread());
}
}
总结:调用该类的get方法,永远返回当前线程放入的数据。线程局部变量。
推荐阅读
-
Java学习笔记 DbUtils数据库查询和log4j日志输出 使用
-
JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
-
JAVAEE——BOS物流项目14:Linux部署(安装jdk、tomcat、mySQL)和扩展资料
-
javaEE-介绍和程序基础
-
JAVAEE——淘淘商城第一天:电商行业的背景和技术特点,商城的介绍、技术的选型、系统架构和工程搭建
-
JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能
-
ThreadLocal和InheritableThreadLocal源码解析
-
JAVAEE——BOS物流项目09:业务受理需求分析、创建表、实现自动分单、数据表格编辑功能使用方法和工作单快速录入
-
ThreadLocal简介和使用示例
-
java中ThreadLocal对象理解和使用