针对MySql封装的JDBC通用框架类(包含增删改查、JavaBean反射原理)
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反射原理)的更多相关文章
- Spring JdbcTemplate框架搭建及其增删改查使用指南
Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...
- 第二百七十七节,MySQL数据库-数据表、以及列的增删改查
MySQL数据库-数据表.以及列的增删改查 1.创建一个表 CREATE(创建) TABLE(表) ENGINE(引擎) ENGINE=INNODB(引擎)还有很多类引擎,这里只是简单的提一下INNO ...
- JDBC实现最简单的增删改查
好久没写博客了,今天刚进入一家公司实习,在实习这段期间想把自己所学的东西通过博客记录下来 今天上午简单回顾了一下用JDBC实现最简单的增删改查 废话不多说,接下来就说明怎么用JDBC实现最简单的增删改 ...
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)
近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...
- MYSQL 之 JDBC(七):增删改查(五) DAO设计模式
Data Access Object,数据访问对象 what:访问数据信息的类.包含了对数据的CRUD(create.read.update.delete,增删改查)操作,而不包含任何业务相关的信息. ...
- ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)
Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...
- hibernate框架(1)---Hibernate增删改查
Hibernate增删改查 1.首先我们要知道什么是Hibernate Hibernate是一个轻量级的ORMapping对象.主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获 ...
- Java_Web三大框架之Hibernate增删改查
下面介绍一下Hibernate的增删改查. 第一步:编写用户实体类以及User.hbm.xml映射 package com.msl.entity; public class User { privat ...
随机推荐
- Android SearchView设置与用法的那点事儿
// 设置该SearchView默认是否自动缩小为图标 mSearchView.setIconifiedByDefault(false); // 为该SearchView组件设置事件监听器 mSear ...
- 51Nod 1024 矩阵中不重复的元素 | 技巧 数学
first try: set<LL> sset; int main() { LL m,n,a,b; while(~scanf("%lld%lld%lld%lld",&a ...
- 2015/8/28 Python基础(2):对象
Python用对象模型来存储数据.构造任何类型的值都是一个对象.Python对象都有是三个特性:身份,类型和值 身份是每个对象的唯一身份标识.任何对象都可以用内建函数id()来得到身份.如: > ...
- aio 爬虫,去重,入库
#aio 爬虫,去重,入库 import asyncio import aiohttp import aiomysql import re from pyquery import PyQuery st ...
- Item 4 ----通过私有构造器强化不可实例化的能力
场景: 在创建工具类的时候,大部分是无需实例化的,实例化对它们没有意义.在这种情况下,创建的类,要确保它是不可以实例化的. 存在问题: 在创建不可实例化的类时,虽然没有定义构造器.但是,客户端在使 ...
- Spring Cloud的基本认识和使用Spring Cloud的基本教程(山东数漫江湖)
认识Spring Cloud Spring Cloud简单来说就是一个微服务相关的框架,至于什么是微服务,简单来说就是一个整体项目由多个单独运行的小项目构成,每个小项目负责一个或多个功能,每个小项目有 ...
- hdu 2059 龟兔赛跑(动态规划DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) M ...
- Python模块学习 - click
Click模块 click模块是Flask的作者开发的一个第三方模块,用于快速创建命令行.它的作用与Python标准库的argparse相同,但是,使用起来更简单. click是一个第三方库,因此使用 ...
- VPS性能测试方法小结(8)
1.为了能够得到更为准确和详细的有关VPS主机性能测试数据,我们应该多角度.全方位地运行多种VPS性能测试工具来进行检测,同时也要记得排除因本地网络环境而造成的数据结果的错误. 2.VPS主机性能跑分 ...
- Nginx-1.6.3反向代理
源码安装nginx cat /etc/redhat-release uname -rm yum install pcre-devel openssl-devel -y rpm -qa pcre pcr ...