java 数据库 模板_JAVA操作数据库的模板方法

关于用操作数据库模板方法如下代码:

[java]

jdbc.properties

url=jdbc:mysql://localhost:3306/cfms

user=root

password=123456

driverClass=com.mysql.jdbc.Driver

package cn.edu.hactcm.base.utils;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

/**

[java] view plaincopyprint?

* CFMS :Computer files management system

* version :1.0 2013-2-19 上午08:44:27

*

* 操作JDBC的工具类

*/

public class JdbcUtils {

private JdbcUtils() {

}

private static String url;

private static String user;

private static String password;

/*

* 静态代码块

*/

static {

try {

// 读取配置文件,通过类加载器的方式读取属性文件

InputStream in = JdbcUtils.class.getClassLoader()

.getResourceAsStream("jdbc.properties");

Properties prop = new Properties();

prop.load(in);

url = prop.getProperty("url");

user = prop.getProperty("user");

password = prop.getProperty("password");

// 注册驱动

String driverClass = prop.getProperty("driverClass");

Class.forName(driverClass);

in.close();

in = null;

} catch (Exception e) {

throw new ExceptionInInitializerError(e);

}

}

/**

* @return 获取与指定数据库的连接

* @throws SQLException

*/

public static Connection getConnection() throws SQLException {

// url,user,password可以直接使用是因为上面定义成静态的了。

Connection connection = DriverManager

.getConnection(url, user, password);

return connection;

}

/**

* @param rs :结果集

* @param stmt:在程序中将使用PrepareStatement,其中Statement是其父类

* @param conn:数据库连接

*/

public static void release(ResultSet rs, Statement stmt, Connection conn) {

// 判断结果集是否为空,如果不为空,关闭清空

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

rs = null;

}

// 判断声明是否为空,如果不为空,关闭清空

if (stmt != null) {

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

stmt = null;

}

// 判断连接是否为空,如果不为空,关闭清空

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

conn = null;

}

}

}

package cn.edu.hactcm.base.dao;

import java.sql.ResultSet;

/**

* CFMS :Computer files management system

* version :1.0 2013-2-19 上午10:02:31

*/

public interface ResultSetHandler {

//处理结果集的方法

public Object handle(ResultSet rs);

}

/**

*

*/

package cn.edu.hactcm.base.dao.impl;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import cn.edu.hactcm.base.dao.ResultSetHandler;

/**

* CFMS :Computer files management system

* version :1.0 2013-2-19 上午10:38:37

*

* 取出第一行的所有记录存入一个Object数组

*/

@SuppressWarnings( { "unchecked", "unused" })

public class ArrayHandler implements ResultSetHandler {

private Class clazz;

public ArrayHandler(Class clazz) {

this.clazz = clazz;

}

public Object handle(ResultSet rs) {

try {

if (rs.next()) {

// 指向了第一行的记录

// 获得元数据

ResultSetMetaData metaData = rs.getMetaData();

// 获得用于查询的sql中的字段列数

int count = metaData.getColumnCount();

// 创建数组

Object[] arr = new Object[count];

// 迭代所有列的值,存入数组

for (int i = 1; i <= count; i++) {

Object value = rs.getObject(i); // 获得指定列的值

arr[i - 1] = value;

}

return arr;

}

return null;

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

/**

*

*/

package cn.edu.hactcm.base.dao.impl;

import java.lang.reflect.Field;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import cn.edu.hactcm.base.dao.ResultSetHandler;

/**

* CFMS :Computer files management system

* version :1.0 2013-2-19 上午10:38:37

*

* 此助手类用于取得结果集中的第一条记录

*/

@SuppressWarnings("unchecked")

public class BeanHandler implements ResultSetHandler {

private Class clazz;

public BeanHandler(Class clazz) {

this.clazz = clazz;

}

public Object handle(ResultSet rs) {

// 不知道有几列数据,不知道列名,不知道封装到什么样的bean

// 表的列明和javabean的字段名一致

try {

if(rs.next()) {

// 创建bean

Object bean = clazz.newInstance();

// 封装数据

// 获得结果集的元数据

ResultSetMetaData metaData = rs.getMetaData();

int count = metaData.getColumnCount();

// 迭代取每一列的数据

for(int i=1; i<=count; i++) {

// 获得列名 username

String columnName = metaData.getColumnName(i);

// 获得数据 ddd

Object value = rs.getObject(columnName);

// 根据列名反射出映射的属性 username

Field field = clazz.getDeclaredField(columnName);

// 为属性赋值

field.setAccessible(true);

field.set(bean, value);

}

return bean;

}

return null;

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

package cn.edu.hactcm.base.dao.impl;

import java.lang.reflect.Field;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.util.ArrayList;

import java.util.List;

import cn.edu.hactcm.base.dao.ResultSetHandler;

/**

* CFMS :Computer files management system

* version :1.0 2013-2-19 上午10:07:19

*

* 此助手类用于取得结果集中的记录的list列表集合,集合中的每个元素是数据库中的一条记录

posted on 2013-08-17 09:50 好不容易 阅读(237) 评论(0)  编辑  收藏

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值