package com.DBUtils;

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.bean.UserInfo; public class JdbcUtils {
private static final String USERNAME = "system";//数据库用户名
private static final String PASSWORD = "zZ123456";//数据库密码
private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";//驱动信息
private static final String URL = "jdbc:oracle:thin:@localhost:1521:bookstore";//数据库地址
private Connection connection = null;
private PreparedStatement statement = null;
private ResultSet resultSet = null;
public JdbcUtils() {
try {
Class.forName(DRIVER);
System.out.println("Connect database Successlly!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} /**
* 得到数据库连接
* @return connection
*/
public Connection getConnection() {
try {
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
} /**
* 更新操作(增删改)
* @param sql
* @param params
* @return boolean
* @throws SQLException
*/
public boolean updateByPreparedStatement(String sql,List<Object> params) throws SQLException {
boolean flag = false;
int result = -1;
statement = connection.prepareStatement(sql);
int index = 1;
if(params != null && !params.isEmpty()){
for(int i=0; i<params.size(); i++){
statement.setObject(index++, params.get(i));
}
}
result = statement.executeUpdate();
return flag = result > 0 ? true : false;
} /**
* 查询单条数据
* @param sql
* @param params
* @return
* @throws SQLException
*/
public Map<String,Object> findSimpleResult(String sql,List<Object> params) throws SQLException {
Map<String,Object> map = new HashMap<String, Object>();
statement = connection.prepareStatement(sql);
int index = 1;
if(params != null && !params.isEmpty()){
for(int i=0; i<params.size(); i++){
statement.setObject(index++, params.get(i));
}
}
resultSet = statement.executeQuery();//返回查询结果
ResultSetMetaData metaData = resultSet.getMetaData();
int col_len = metaData.getColumnCount();
while (resultSet.next()) {
for(int i=0; i<col_len; i++){
String cols_name = metaData.getCatalogName(i+1).toLowerCase();
Object cols_value = resultSet.getObject(cols_name);
if(cols_value == null){
cols_value = "";
}
map.put(cols_name, cols_value);
}
}
return map;
} /**
* 查询多条数据
* @param sql
* @param params
* @return
* @throws SQLException
*/
public List<Map<String, Object>> findModeResult(String sql, List<Object> params) throws SQLException{
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
int index = 1;
statement = connection.prepareStatement(sql);
if(params != null && !params.isEmpty()){
for(int i = 0; i<params.size(); i++){
statement.setObject(index++, params.get(i));
}
}
resultSet = statement.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int cols_len = metaData.getColumnCount();
while(resultSet.next()){
Map<String, Object> map = new HashMap<String, Object>();
for(int i=0; i<cols_len; i++){
String cols_name = metaData.getColumnName(i+1).toLowerCase();
Object cols_value = resultSet.getObject(cols_name);
if(cols_value == null){
cols_value = "";
}
map.put(cols_name, cols_value);
}
list.add(map);
} return list;
} /*
* 通过反射机制查询单条记录
* @param sql
* @param params
* @param cls
* @return
* @throws Exception
*/
public <T> T findSimpleRefResult(String sql, List<Object> params,
Class<T> cls )throws Exception{
T resultObject = null;
int index = 1;
statement = connection.prepareStatement(sql);
if(params != null && !params.isEmpty()){
for(int i = 0; i<params.size(); i++){
statement.setObject(index++, params.get(i));
}
}
resultSet = statement.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int cols_len = metaData.getColumnCount();
while(resultSet.next()){
//通过反射机制创建一个实例
resultObject = cls.newInstance();
for(int i = 0; i<cols_len; i++){
String cols_name = metaData.getColumnName(i+1).toLowerCase();
Object cols_value = resultSet.getObject(cols_name);
if(cols_value == null){
cols_value = "";
}
Field field = cls.getDeclaredField(cols_name);
field.setAccessible(true); //打开javabean的访问权限
field.set(resultObject, cols_value);
}
}
return resultObject; } /**
* 通过反射查询多条记录
* @param sql
* @param params
* @param cls
* @return
* @throws Exception
*/
public <T> List<T> findMoreRefResult(String sql, List<Object> params,
Class<T> cls )throws Exception {
List<T> list = new ArrayList<T>();
int index = 1;
statement = connection.prepareStatement(sql);
if(params != null && !params.isEmpty()){
for(int i = 0; i<params.size(); i++){
statement.setObject(index++, params.get(i));
}
}
resultSet = statement.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int cols_len = metaData.getColumnCount();
while(resultSet.next()){
//通过反射机制创建一个实例
T resultObject = cls.newInstance();
for(int i = 0; i<cols_len; i++){
String cols_name = metaData.getColumnName(i+1).toLowerCase();
Object cols_value = resultSet.getObject(cols_name);
if(cols_value == null){
cols_value = "";
}
Field field = cls.getDeclaredField(cols_name);
field.setAccessible(true); //打开javabean的访问权限
field.set(resultObject, cols_value);
}
list.add(resultObject);
}
return list;
} public void Conn(){
if(resultSet != null){
try{
resultSet.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(statement != null){
try{
statement.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(connection != null){
try{
connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
} public static void main(String[] args) {
JdbcUtils jdbcUtils = new JdbcUtils();
jdbcUtils.getConnection();
/*******************增*********************/
/*
String sql = "insert into userinfo (username, password) values (?, ?)";
List<Object> params = new ArrayList<Object>();
params.add("02");
params.add("02");
try {
boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
System.out.println(flag);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
jdbcUtils.Conn();
}
*/ /*******************删*********************/
//删除名字为张三的记录
/*
String sql = "delete from userinfo where username = ?";
List<Object> params = new ArrayList<Object>();
params.add("7");
try {
boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
System.out.println(flag);
} catch (SQLException e) {
e.printStackTrace();
} finally{
jdbcUtils.Conn();
}
*/ /*******************改*********************/
/*
String sql = "update userinfo set password = ? where username = ? ";
List<Object> params = new ArrayList<Object>();
params.add("233333");
params.add("01");
boolean flag;
try {
flag = jdbcUtils.updateByPreparedStatement(sql, params);
System.out.println(flag);
} catch (SQLException e) {
e.printStackTrace();
} finally{
jdbcUtils.Conn();
}
*/ /*******************查*********************/
//不利用反射查询多个记录
/*
String sql2 = "select * from userinfo";
List<Map<String, Object>> list;
try {
list = jdbcUtils.findModeResult(sql2, null);
System.out.println(list); //list toSteing() 直接输出
} catch (SQLException e) {
e.printStackTrace();
}finally{
jdbcUtils.Conn();
}*/ /*
//不利用反射查询单个记录 (出不来!!!)
String sql2 = "select * from userinfo where username = ?";
Map<String,Object> map;//
List<Object> params = new ArrayList<Object>();
params.add("01");
Map<String, Object> userinfo ;
try{
userinfo = jdbcUtils.findSimpleResult(sql2, params);
System.out.println(userinfo);
}catch(Exception e){ }finally{
jdbcUtils.Conn();
}
*/ /*
//利用反射查询单条记录
String sql = "select * from userinfo where username = ? ";
List<Object> params = new ArrayList<Object>();
params.add("01");
UserInfo userInfo;
try {
userInfo = jdbcUtils.findSimpleRefResult(sql, params, UserInfo.class);
System.out.print(userInfo);
} catch (Exception e) {
e.printStackTrace();
}finally{
jdbcUtils.Conn();
}
*/ /*
//利用反射查询多条记录
String sql = "select * from userinfo where username = ?";
List<Object> params = new ArrayList<Object>();
params.add("02");
List<UserInfo> list;
try {
list = jdbcUtils.findMoreRefResult(sql, params, UserInfo.class);
System.out.print(list);
} catch (Exception e) {
e.printStackTrace();
}finally{
jdbcUtils.Conn();
}
*/ }
}
package com.bean;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Date; public class UserInfo implements Serializable{ private static final long serialVersionUID = 1L;
private String username;
private String password; public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserInfo [username=" + username + ", password=" + password
+ ", getClass()=" + getClass() + ", hashCode()=" + hashCode()
+ ", toString()=" + super.toString() + "]";
} }

针对MySql封装的JDBC通用框架类(包含增删改查、JavaBean反射原理)的更多相关文章

  1. Spring JdbcTemplate框架搭建及其增删改查使用指南

    Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...

  2. 第二百七十七节,MySQL数据库-数据表、以及列的增删改查

    MySQL数据库-数据表.以及列的增删改查 1.创建一个表 CREATE(创建) TABLE(表) ENGINE(引擎) ENGINE=INNODB(引擎)还有很多类引擎,这里只是简单的提一下INNO ...

  3. JDBC实现最简单的增删改查

    好久没写博客了,今天刚进入一家公司实习,在实习这段期间想把自己所学的东西通过博客记录下来 今天上午简单回顾了一下用JDBC实现最简单的增删改查 废话不多说,接下来就说明怎么用JDBC实现最简单的增删改 ...

  4. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  5. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

  6. MYSQL 之 JDBC(七):增删改查(五) DAO设计模式

    Data Access Object,数据访问对象 what:访问数据信息的类.包含了对数据的CRUD(create.read.update.delete,增删改查)操作,而不包含任何业务相关的信息. ...

  7. ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)

    Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...

  8. hibernate框架(1)---Hibernate增删改查

    Hibernate增删改查 1.首先我们要知道什么是Hibernate Hibernate是一个轻量级的ORMapping对象.主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获 ...

  9. Java_Web三大框架之Hibernate增删改查

    下面介绍一下Hibernate的增删改查. 第一步:编写用户实体类以及User.hbm.xml映射 package com.msl.entity; public class User { privat ...

随机推荐

  1. DIV CSS display(block,inline,none)的属性教程

    display:inline.block.inline-block的区别 display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都 ...

  2. vijos 1004 伊甸园日历游戏 博弈+打表找规律

    描述 Adam和Eve玩一个游戏,他们先从1900.1.1到2001.11.4这个日期之间随意抽取一个日期出来.然后他们轮流对这个日期进行操作: 1 : 把日期的天数加1,例如1900.1.1变到19 ...

  3. LightOJ 1093 - Ghajini 线段树

    http://www.lightoj.com/volume_showproblem.php?problem=1093 题意:给定序列,问长度为d的区间最大值和最小值得差最大是多少. 思路:可以使用线段 ...

  4. html 制作静态页面新知识

    1.在区块线边框添加一条水平线 例如:<div  style:"height :300px;width:800px;border-bottom: solid 1px orange ;& ...

  5. 关于ng-if的理论性知识你了解多少?

    ng-if简介: ● 使用ng-if指令可以完全根据表达式的值在DOM中生成或移除一个元素.如果赋值给ng-if 的表达式的值是false,那对应的元素将会从DOM中移除,否则对应元素的一个克隆将被重 ...

  6. bzoj 2276: [Poi2011]Temperature——单调队列

    Description 某国进行了连续n天的温度测量,测量存在误差,测量结果是第i天温度在[l_i,r_i]范围内. 求最长的连续的一段,满足该段内可能温度不降 第一行n 下面n行,每行l_i,r_i ...

  7. 【BZOJ】1202: [HNOI2005]狡猾的商人

    [题意]w组数据,给定n和m,给出m段区间[s,t](1<=s<=t<=n)的数字和,求是否矛盾.n<100,m<1000,w<100. [算法]带权并查集 [题解 ...

  8. oracle scott用户不存在

    scott用户拥有一些基础的数据表,可以供我们练习sql.先执行 alter user scott account unlock; 查看scott用户是否存在 当scott用户不存在,我们就需要在$O ...

  9. MSSQL 基础知识001

    数据库概述: DBMS(Database Management System,数据库管理系统)和数据库. 平时谈到“数据库”可能有两种含义:MSSQLServer.Oracle等某种DBMS:存放一堆 ...

  10. javascript 变量类型判断

    一.typeof 操作符 对于Function, String, Number ,Undefined 等几种类型的对象来说,他完全可以胜任,但是为Array时 "); typeof arr ...