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. git代码冲突

    如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候, 在发布这个配置文件的时候,会发生代码冲突: error: Your local changes to the f ...

  2. linux包安装,解压,压缩,包管理,环境变量

    linux 包安装,解压,压缩,包管理 centoscentos上有系统包管理器yum yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.r ...

  3. LightOJ 1326 – Race 第二类Stirling数/

    简单的模板题. 题意:问n匹马出现的不同排名数. 题解:可以使用DP,本质上还是第二类Stirling数(隔板法) #include <stdio.h> #include <iost ...

  4. jsp 内置对象(一)

    一.jsp的九大内置对象 内置对象 所属类 pageContext javax.servlet.jsp.PageContext request javax.servlet.http.HttpServl ...

  5. java collection(一)

    1.Collection层次结构: 2.集合Conllection的基本概念: (1)集合的基本认识:如StringBuffer&StringBuilder是集合(存储的对象类型是String ...

  6. Centos 6 FTP 配置

    How to configure ftp server on centos 6 Posted  krizna  Centos FTP – File transfer protocol is used ...

  7. 获取数据源数据的实现---Architecting Android

    UserRepository,这个接口,描述了Repository提供给用户的功能就是getUsers,getUser(ID).用户只管使用,其它细节无需理会. /** * Interface tha ...

  8. js_判断当前url是否合法http(s)

    alert(checkURL('http:555')); //false function checkURL(URL) { var str = URL, Expression = /http(s)?: ...

  9. base--AuditObject

    //参考base-4.0.2.jarpublic class AuditObject extends HashMap<String, Object> implements TimeRefe ...

  10. linux网络编程之IO函数

    Linux操作系统中的IO函数主要有read(),write(),recv(),send(),recvmsg(),sendmsg(),readv(),writev(). 接收数据的recv()函数 # ...