文档章节

Druid DBUtils ORM 封裝

十月的星空
 十月的星空
发布于 2014/05/27 11:54
字数 391
阅读 428
收藏 8

package com.msi.druid;

import java.io.IOException; import java.io.InputStream; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; import com.alibaba.druid.pool.DruidPooledConnection; import com.msi.model.User;

public class DBHelper {

private static DBHelper dbHlper = null;
private static DruidDataSource druidDataSource;
private DataSource dataSource;
private QueryRunner runner = null;

public static DBHelper getInstance() {
	if (dbHlper == null) {
		dbHlper = new DBHelper();
	}
	return dbHlper;
}

static {
	Properties properties = loadProperties("db_server.properties");
	try {
		druidDataSource = (DruidDataSource) DruidDataSourceFactory
				.createDataSource(properties);
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

public DruidDataSource getDruidDataSource() {
	return druidDataSource;
}

// 当不支持的时候,显式调用Connection
public DruidPooledConnection getConnection() throws SQLException {
	return druidDataSource.getConnection();
}

public DataSource getDataSource() {
	this.dataSource = DBHelper.getInstance().getDruidDataSource();
	return dataSource;
}

public static Properties loadProperties(String fileName) {
	// TODO Auto-generated method stub
	Properties p = new Properties();

	// 方法1获取配置
	// InputStream inStream =
	// DBHelper.class.getClass().getResourceAsStream("/db_dang.properties");
	InputStream inStream = null;
	try {

// 获取配置的第二种方式 // String path = DBHelper.class.getClassLoader().getResource("\") // .getPath(); // path = new File(path).getParent(); // String profilepath = path + File.separator + fileName; // System.out.println("file ==="+profilepath); // inStream = new FileInputStream(new File(profilepath));

		inStream = DBHelper.class.getClass().getResourceAsStream("/"+fileName);
		p.load(inStream);
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} finally {
		try {
			if (inStream != null) {
				inStream.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	return p;
}

public QueryRunner initRunner() {
	this.dataSource = DBHelper.getInstance().getDataSource();
	if (this.dataSource != null) {
		this.runner = new QueryRunner(this.dataSource);
	}
	return runner;
}

public QueryRunner getRunner() {
	return initRunner();
}

public static void main(String[] args) throws SQLException {
	// TODO Auto-generated method stub
	List<User> userList = DBHelper
			.getInstance()
			.getRunner()
			.query("select * from t_user",
					new BeanListHandler<User>(User.class));
	for (int i = 0; i < userList.size(); i++) {
		System.out.print(userList.get(i) + "\r\n");
	}

	DruidPooledConnection conn = DBHelper.getInstance().getConnection();
	Statement stmt = conn.createStatement();
	ResultSet rs = stmt.executeQuery("select * from t_user");
	User user = null;
	while (rs.next()) {
		user = new User();
		user.setUserName(rs.getString("userName"));
		System.err.println(user.getUserName());
	}
}

}

配置如下 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/db_diary username=root password=yan filters=stat initialSize=2 maxActive=300 maxWait=60000 timeBetweenEvictionRunsMillis=60000 minEvictableIdleTimeMillis=300000 validationQuery=SELECT 1 testWhileIdle=true testOnBorrow=false testOnReturn=false poolPreparedStatements=true maxPoolPreparedStatementPerConnectionSize=200

WebXml中配置監控功能

<!-- 启用Web监控统计功能需要在Web应用的web.xml中加入这个Servlet声明 -->

<servlet>
	<servlet-name>DruidStatView</servlet-name>
	<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet>
	<description>This is the description of my J2EE component</description>
	<display-name>This is the display name of my J2EE component</display-name>
	<servlet-name>DruidServlet</servlet-name>
	<servlet-class>com.msi.servlet.DruidServlet</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>DruidStatView</servlet-name>
	<url-pattern>/druid/*</url-pattern>
</servlet-mapping>

本文转载自:

上一篇: Perl 读取Json 数据
下一篇: 單選,多選操作
十月的星空
粉丝 2
博文 28
码字总数 7412
作品 0
信阳
程序员
私信 提问
加载中

评论(0)

Apache Commons-DbUtils 1.4 发布

dbutils 1.4 发布了,dbutils 并不是一个严格意义上的 ORM 框架,它提供了一些Jdbc的操作封装来简化数据查询和记录读取操作。本站使用的就是 dbutils 这个工具包来进行数据库存取。 新版本主...

红薯
2011/10/25
3.6K
0
DbUtils的改进版DbUtils-Pro1.7.0发布

DbUtils-Pro是一个DbUtils的改进版,它支持多种SQL风格并改进事务管理。主要特点有: 改进DbUtils的异常处理,将SQLException转化为运行时导常抛出,无需再手工捕获异常,这点类似于Spring的...

yong9981
2017/08/31
12
0
jdao1.1.6 发布,轻量级 ORM 工具包

jdao1.1.6已发布,jdao是一个Java的轻量级orm工具包,根据表名可以生成与之对应的dao类,同时也支持原生sql语句操作。 本次更新如下: 增加了DBUtils 类,具体使用请参考 DaoTest,RsScanTest...

donnie-wu
2017/11/06
1.2K
3
小酒一杯品源码-DbUtils代码解读

ORM一直是Web开发一个热点话题,DbUtils则是给出了一个相当简洁的答案。DbUtils的嵌套也不深,而且主动的API调用也非常符合程序员的思维(Hibernate和iBatis这种隐藏了大多数细节的框架,连找...

黄亿华
2013/09/10
7K
18
Jfinal 数据操作模块 db.record v 0.0.4 发布

更新内容 添加: 修复:初始化数据源名称错误 简介: 通过 record(map)的方式操作表数据,似orm非orm,半对像操作。 本类库基于jfinal V1.9改造,写一些简单的功能的时候特别适合使用,比如要转...

衣旧
2019/05/29
529
8

没有更多内容

加载失败,请刷新页面

加载更多

架构师之路(九)之Hystrix介绍

Hystrix是什么 在分布式环境中,许多服务依赖项中的一些必然会失败。Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、...

yaukie
18分钟前
51
0
易鑫车贷人工客服电话是多少

易鑫车贷人工客服电话是多少O29-63O37558人工客服电话O29-688O2826方法,大家可以采取一些传统的方式,比如说打开易鑫车贷,然后设置,就会看到帮助与反馈的字眼,然后大家打开这到各种各样的问题...

fgrf
今天
58
0
IntelliJ 如何找到项目中 Deprecated 的方法

在一个项目中,如果我们标记了某些元素为 Deprecated 的话,如何让我们能够快速找到? 简单来说,你可以对项目进行 Code Inspection。 选择 Analyze > Inspect Code 在弹出的对话框中,对整个...

honeymoose
今天
93
0
Java中的排序算法:冒泡排序

学习了一种新的排序算法:冒泡排序,冒泡排序是一种交换排序,指比较相邻的两个元素,如果前者比后者大,就交换位置,继续进行比较。 通过例子来实现: import java.util.Arrays; public cl...

北芷南姜
今天
73
0
OSChina 周五乱弹 —— 你不仅要背负工作,还要背负领导

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Cold Rain》- AniFace 手机党少年们想听歌,请使劲儿戳(这里) @明月依稀 :露...

小小编辑
今天
1.5K
5

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部