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) 编辑 收藏
java 数据库 模板_JAVA操作数据库的模板方法相关推荐
- Java数据库开发与应用之MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等
MySQL数据库,JDBC接口,MyBatis框架等,掌握的数据的存放和管理. Java数据库开发基础,介绍MySQL数据库.JDBC操作数据库.C3P0数据库连接池,Java反射等内容,进行油画商城 ...
- 快速上手JDBC——Java如何在底层操作数据库
我们为什么学习这个,用一句话概括,JDBC就是用Java语言操作关系型数据库 原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句 同理,以后学习用J ...
- oracle表的历史数据转储过程,C#连接Oracle数据库通过存储过程操作数据库 - cuizm的专栏 - CSDN博客...
C#连接Oracle数据库通过存储过程操作数据库 收藏 此文于2011-06-07被推荐到CSDN首页 此文于2011-06-08被推荐到CSDN首页 如何被推荐? 之前笔者一直用C#连接SQL Se ...
- 第二百七十九节,MySQL数据库-pymysql模块操作数据库
MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数 使用方式: 模块名称.conne ...
- java 从数据库取值_JAVA操作数据库--从一张表中取值,经过判断,然后插入另一张表中。...
JAVA操作数据库-->从一张表中取值,经过判断,然后插入另一张表中. SQL语句如下:两张表 weather 和 weather_process. id均为自动增长.Oracle中采用序列 S ...
- java连接本地数据库命令_Java操作数据库时一次连接只能执行一条SQL命令
Java操作数据库时一次连接只能执行一条SQL命令 答:× 全面深化改革要攻坚涉险,必须坚持正确的思想方法,不断探索和把握全面深化改革的内在规律,特别是要把握和处理好全面深化改革中的等重大关系 答:整 ...
- java操作mysql数据库实例_java操作mysql数据库实例_MySQL
bitsCN.com //接口类package com.syxy.dao;import com.syxy.domain.User;//操纵数据库的 dao接口public interface User ...
- java 数据库操作教程_java操作数据库的基本方法
此次开发工具为eclipse,才有的数据库驱动是mysql-connector-java-5.1.8-bin.jar 第一步,在eclipse的工程目录中引用mysql驱动 驱动下载地址:https: ...
- java mysql数据库编程_java JDBC数据库(mysql)编程
什么是JDBC • JDBC(Java Data Base Connectivity,Java数据库连接) • 是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问 • 它由一组用 ...
- Java JDBC基础 连接数据库 操作数据库
1.JDBC概述 1.1 数据持久化 持久化(persistence) :把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用数据持久化意味着将内存中的数据保存到硬盘上加以&qu ...
最新文章
- php数据库缓存类,常见php数据文件缓存类汇总
- Java基础笔记18
- varnish 4.0 官方文档翻译12-VCL
- 破解win2003“终端服务器授权”激活许可证!
- LNMP Nginx 499 问题 第三方回调异常
- 京东商品及评论爬虫(selenium)
- ReportViewer教程(10)-给报表分组合计
- 动态规划计算字符相似度感觉棒棒哒
- uni-app:mescroll-uni 实现上拉加载,下拉刷新
- office插件开发_Excel插件——方方格子
- QQ、淘宝、阿里旺旺在线网页链接代码及详解 很实用
- 思科交换机端口模式配置 端口安全配置 思科模拟器
- sizeof 32位和64位操作系统的区别
- 机器学习:局部加权线性回归(Locally Weighted Linear Regression)
- 文本处理三剑客与正则表达式详解
- eclipse导入Tomcat出现404错误
- 数学老师必看,教您快速画椭圆
- Mac上如何截屏以及修改截屏快捷键
- wallhaven壁纸下载-selenium版本
- 云淘客自动抢单shua单源码系统
热门文章
- android设备调用usb外置摄像头方法及案例
- 19所大陆高校上榜!2021泰晤士世界大学影响力排名发布
- 海外博士一般朝九晚五,国内博士动辄十几小时科研时间,为什么普遍认为海外博士水平较高?...
- 在小树林飞也能又快又稳,这是港科大沈劭劼组的「猛禽」无人机重规划框架...
- 「3D手指血管扫描」一套无法复制的生物识别系统
- [Swift通天遁地]一、超级工具-(11)使用EZLoadingActivity制作Loading加载等待动画
- (3)《Head First HTML与CSS》学习笔记---CSS入门
- mysql常用的一些命令,用于查看数据库、表、字段编码
- PHP导出MySQL数据到Excel文件
- 数据库设计方法、规范和技巧