`
eric_hwp
  • 浏览: 126591 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Jdbc封装的增删查改

 
阅读更多
package com.huiyun.common.dao;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletRequest;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ibm.icu.text.SimpleDateFormat;
import com.tis.helper.SqlM;

public class CommonDao {
	static SimpleDateFormat ymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	public static JSONObject getById(String tableName, String pkName,Serializable id) {
		String sql="select * from ["+tableName+"] where "+pkName+"=?";
		List<Object> param=new ArrayList<Object>();
		JSONArray ja= excuteQuery(sql,param);
		if(ja.size()>0)		
			return ja.getJSONObject(0);
		else
			return new JSONObject();
	}
	public static JSONArray excuteQuery(String sql, List<Object> param) {
		SqlM sqlM = new SqlM();
		Connection con = sqlM.conn;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			pstmt = con.prepareStatement(sql);
			for (int i = 0; param != null && i < param.size(); i++) {
				Object value = param.get(i);
				if (value == null) {
					pstmt.setNull(i + 1, Types.OTHER);
				} else if(value instanceof Date) {
					String datestr = ymdhms.format((java.util.Date) value);
					pstmt.setString(i + 1, datestr);
				} else  {
					pstmt.setObject(i + 1, value);
				}
			}
			rs = pstmt.executeQuery();
			return rs2JSONObject(rs);
		} catch (SQLException e) {
			e.printStackTrace();
			return new JSONArray();
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (con != null) {

				sqlM.closeConnection();

			}
		}

	}
	
	public static boolean exists(String sql, List<Object> param) {
		SqlM sqlM = new SqlM();
		Connection con = sqlM.conn;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			pstmt = con.prepareStatement(sql);
			for (int i = 0; param != null && i < param.size(); i++) {
				Object value = param.get(i);
				if (value == null) {
					pstmt.setNull(i + 1, Types.OTHER);
				} else if(value instanceof Date) {
					String datestr = ymdhms.format((java.util.Date) value);
					pstmt.setString(i + 1, datestr);
				}else {
					pstmt.setObject(i + 1, value);
				}
			}
			rs = pstmt.executeQuery();
			return rs.next();
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (con != null) {

				sqlM.closeConnection();

			}
		}

	}

	public static JSONArray rs2JSONObject(ResultSet rs) {
		try {
			ResultSetMetaData rsmd = rs.getMetaData();
			int cols = rsmd.getColumnCount();
			List<String> names = new ArrayList<String>();
			for (int i = 0; i < cols; i++) {
				names.add(rsmd.getColumnLabel(i + 1));
			}
			JSONArray ja = new JSONArray();
			while (rs.next()) {
				JSONObject jo = new JSONObject();
				for (String name : names) {
					jo.put(name, rs.getObject(name));
				}
				ja.add(jo);
			}
			return ja;
		} catch (SQLException e) {

			e.printStackTrace();
			return new JSONArray();
		}
	}

	public static int update(String tableName, JSONObject jo, String pkName) {
		SqlM sqlM = new SqlM();
		Connection con = sqlM.conn;
		PreparedStatement pstmt = null;
		StringBuffer sql = new StringBuffer("update ").append(tableName)
				.append(" set ");
		Set<String> keys = jo.keySet();
		boolean isFirst = true;
		List<Object> param = new ArrayList<Object>();
		for (String key : keys) {
			if (jo.get(key) != null && !key.equalsIgnoreCase(pkName)) {
				if (isFirst) {
					sql.append(" [").append(key).append("]=?");
					isFirst = false;
				} else {
					sql.append(" ,[").append(key).append("]=? ");

				}
				param.add(jo.get(key));
			}
		}
		sql.append(" where [").append(pkName).append("]=?");
		param.add(jo.get(pkName));
		System.out.println(sql);
		System.out.println(JSON.toJSONStringWithDateFormat(param,
				"yyyy-MM-dd HH:mm:ss"));
		try {
			pstmt = con.prepareStatement(sql.toString());
			int index = 1;
			for (Object o : param) {
				if (o instanceof java.util.Date) {
					// long time=((java.util.Date)o).getTime();
					// javax.sql.Date d=new javax.sql.Date(time);
					// pstmt.setDate(index, d);
					String datestr = ymdhms.format((java.util.Date) o);
					pstmt.setString(index, datestr);
					index++;
				} else {
					pstmt.setObject(index, o);
					index++;
				}

			}
			return pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(sql);
			System.out.println(jo.toJSONString());
		} finally {
			
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (con != null) {

				sqlM.closeConnection();

			}
		}
		return -1;

	}
	public static boolean isExist(String name,String...pkNames){
		for(String pkName:pkNames){
			if(name.equalsIgnoreCase(pkName))
				return true;
		}
		return false;
	}
	public static int update(String tableName, JSONObject jo, String... pkNames) {
		SqlM sqlM = new SqlM();
		Connection con = sqlM.conn;
		PreparedStatement pstmt = null;
		StringBuffer sql = new StringBuffer("update ").append(tableName)
				.append(" set ");
		Set<String> keys = jo.keySet();
		boolean isFirst = true;
		List<Object> param = new ArrayList<Object>();
		
		
		for (String key : keys) {
			if (jo.get(key) != null && !isExist(key,pkNames)) {
				if (isFirst) {
					sql.append(" [").append(key).append("]=?");
					isFirst = false;
				} else {
					sql.append(" ,[").append(key).append("]=? ");

				}
				param.add(jo.get(key));
			}
		}
		sql.append(" where ");
		isFirst = true;
		for(String pkName:pkNames){
			if(isFirst){
				sql.append("  [").append(pkName).append("]=?");
				param.add(jo.get(pkName));
				isFirst=false;
			}else{
				sql.append(" and [").append(pkName).append("]=?");
				param.add(jo.get(pkName));
			}
		}
		System.out.println(sql);
		System.out.println(JSON.toJSONStringWithDateFormat(param,
				"yyyy-MM-dd HH:mm:ss"));
		try {
			pstmt = con.prepareStatement(sql.toString());
			int index = 1;
			for (Object o : param) {
				if (o instanceof java.util.Date) {
					// long time=((java.util.Date)o).getTime();
					// javax.sql.Date d=new javax.sql.Date(time);
					// pstmt.setDate(index, d);
					String datestr = ymdhms.format((java.util.Date) o);
					pstmt.setString(index, datestr);
					index++;
				} else {
					pstmt.setObject(index, o);
					index++;
				}

			}
			return pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(sql);
			System.out.println(jo.toJSONString());
		} finally {
			
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (con != null) {

				sqlM.closeConnection();

			}
		}
		return -1;

	}

	public static int insert(String tableName, JSONObject jo) {
		SqlM sqlM = new SqlM();
		Connection con = sqlM.conn;
		PreparedStatement pstmt = null;
		StringBuffer sql = new StringBuffer("insert into  [").append(
				tableName.trim()).append("] (");
		Set<String> keys = jo.keySet();
		boolean isFirst = true;
		List<Object> param = new ArrayList<Object>();
		StringBuffer vsql = new StringBuffer(" values(");
		for (String key : keys) {
			if (jo.get(key) != null) {
				if (isFirst) {
					sql.append("[").append(key).append("]");
					vsql.append("?");
					isFirst = false;
				} else {
					sql.append(" ,[").append(key).append("]");
					vsql.append(" ,?");

				}
				param.add(jo.get(key));
			}
		}
		sql.append(" ) ");
		vsql.append(" ) ");
		System.out.println(sql.append(vsql));
		try {
			pstmt = con.prepareStatement(sql.toString());
			int index = 1;
			for (String key : keys) {

				Object o = jo.get(key);
				if (o != null) {

					if (o instanceof java.util.Date) {
						// long time=((java.util.Date)o).getTime();
						// javax.sql.Date d=new javax.sql.Date(time);
						// pstmt.setDate(index, d);
						String datestr = ymdhms.format((java.util.Date) o);
						pstmt.setString(index, datestr);
						index++;
					} else {
						pstmt.setObject(index, o);
						index++;
					}
				}
			}
			return pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(sql);
			System.out.println(jo.toJSONString());
		}finally {
			
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (con != null) {

				sqlM.closeConnection();

			}
		}
		return -1;

	}

	public static int update(String tableName, ServletRequest request,
			String pkName) {
		SqlM sqlM = new SqlM();
		Connection con = sqlM.conn;
		PreparedStatement pstmt = null;
		StringBuffer sql = new StringBuffer("update ").append(tableName)
				.append(" set ");
		Enumeration<String> ekeys = request.getParameterNames();
		Set<String> keys = new HashSet<String>();
		while (ekeys.hasMoreElements()) {
			keys.add(ekeys.nextElement());
		}
		boolean isFirst = true;
		List<Object> param = new ArrayList<Object>();
		for (String key : keys) {
			if (request.getParameter(key) != null
					&& !key.equalsIgnoreCase(pkName)) {
				if (isFirst) {
					sql.append(" [").append(key).append("]=?");
					isFirst = false;
				} else {
					sql.append(" ,[").append(key).append("]=? ");
				}
				param.add(request.getParameter(key));
			}
		}
		sql.append(" where [").append(pkName).append("]=?");
		param.add(request.getParameter(pkName));
		System.out.println(sql);
		System.out.println(JSON.toJSONStringWithDateFormat(param,
				"yyyy-MM-dd HH:mm:ss"));
		try {
			pstmt = con.prepareStatement(sql.toString());
			int index = 1;
			for (Object o : param) {
				pstmt.setObject(index, o);
				index++;
			}
			return pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(sql);

		}finally {
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (con != null) {
				sqlM.closeConnection();
			}
		}
		return -1;

	}

	public static int insert(String tableName, ServletRequest request) {
		SqlM sqlM = new SqlM();
		Connection con = sqlM.conn;
		PreparedStatement pstmt = null;
		StringBuffer sql = new StringBuffer("insert into  [").append(
				tableName.trim()).append("] (");
		Enumeration<String> ekeys = request.getParameterNames();
		Set<String> keys = new HashSet<String>();
		while (ekeys.hasMoreElements()) {
			keys.add(ekeys.nextElement());
		}
		boolean isFirst = true;
		List<Object> param = new ArrayList<Object>();
		StringBuffer vsql = new StringBuffer(" values(");
		for (String key : keys) {
			if (request.getParameter(key) != null) {
				if (isFirst) {
					sql.append("[").append(key).append("]");
					vsql.append("?");
					isFirst = false;
				} else {
					sql.append(" ,[").append(key).append("]");
					vsql.append(" ,?");

				}
				param.add(request.getParameter(key));
			}
		}
		sql.append(" ) ");
		vsql.append(" ) ");
		System.out.println(sql.append(vsql));
		try {
			pstmt = con.prepareStatement(sql.toString());
			int index = 1;
			for (String key : keys) {
				if (request.getParameter(key) != null) {
					pstmt.setObject(index, request.getParameter(key));
					index++;
				}
			}
			return pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(sql);

		}finally {
			
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (con != null) {

				sqlM.closeConnection();

			}
		}
		return -1;

	}

	@Test
	public void test() {
		List<Object> list=new ArrayList<Object>();
		list.add(1);
		JSONArray ja = excuteQuery("select *  from dw_sale_bill where memberId=?", list);
		System.out.println(JSON.toJSONStringWithDateFormat(ja,
				"yyyy-MM-dd HH:mm:ss"));
	}

	@Test
	public void qgc_test() {
		JSONObject jo = new JSONObject();
		jo.put("name", "name");
		jo.put("desc", "desc");
		jo.put("bfloatb", 4.0f);
		jo.put("bintb", 4);
		jo.put("cdate", new Date());
	
		insert("qgc_test", jo);
		jo.put("name", "name2");
		jo.put("desc", "desc2");
		jo.put("bfloatb", 5.0f);
		jo.put("bintb", 5);
		jo.put("id", 2);
		//jo.put("ts", new Date());
		update("qgc_test", jo, "id");
	}
	
	public static JSONObject request2JSONObject(ServletRequest request,String... names){
		JSONObject jo=new JSONObject();
		for(String name:names){
			String value=request.getParameter(name);
			jo.put(name, value);
		}
		return jo;
		
	}
	
	public static List<JSONObject> request2JSONObjects(ServletRequest request,String... names){
		List<JSONObject> list=new ArrayList<JSONObject>();
		
		Map<String, String[]> map = request.getParameterMap();
		int max=0;
		for(String name:names){
			String[] values=map.get(name);
			if(values!=null&&max<values.length){
				max=values.length;
			}
		}
		for(int i=0;i<max;i++){
			JSONObject jo=new JSONObject();
			for(String name:names){
				String[] values=map.get(name);
				if(i<values.length){
				jo.put(name, values[i]);
				}
			}
		}
		return list;
		
	}
	static int max(int... v){
		int max=0;
		for(int i=0;i<v.length;i++){
			if(v[i]>max)
				max=v[i];
		}
		return max;
	}

}

 

 

分享到:
评论

相关推荐

    jdbc完全封装实现增删改查

    实现完全的对jdbc对象的封装,只需调用则可对数据库进行CRUD操作

    java增删改查JDBC封装类(泛型封装)

    "java增删改查JDBC封装类(泛型封装)"这个主题是关于如何利用泛型来优化JDBC操作,以提高代码的可读性、安全性和复用性。以下将详细讲解这个主题涉及的知识点。 1. **JDBC基础**: - JDBC是Java中连接数据库的标准...

    layui数据表格显示增删查改.zip

    在"layui数据表格显示增删查改.zip"这个项目中,我们主要关注的是如何利用layui实现数据表格的功能,并结合后端技术进行数据操作。下面将详细介绍这个项目涉及的关键知识点。 1. layui数据表格: layui的表格组件...

    jsf+javabean+jdbc完成对表增删查改

    在本项目中,“jsf+javabean+jdbc完成对表增删查改”指的是使用JSF与JavaBean以及JDBC技术来实现对数据库中表格的基本操作:添加(Insert)、删除(Delete)、查询(Query)和修改(Update)。 首先,让我们深入...

    jpsJavaWep增删查改.zip

    标题 "jpsJavaWep增删查改.zip" 暗示了这是一个关于使用Java Web进行CRUD操作的项目或教程。"jps"可能是Java进程服务(Java Process Service)的缩写,它通常用于查看Java应用程序的运行状态。在这个上下文中,它...

    Struts2+JDBC增删查改

    在这个"Struts2+JDBC增删查改"项目中,我们将会深入探讨如何利用Struts2作为MVC框架与JDBC进行数据库交互。 首先,Struts2是一个基于MVC设计模式的开源Web应用框架,它简化了Java Servlets和JSP的开发。Struts2的...

    SSH+Oracle增删查改

    在"SSH+Oracle增删查改"的主题中,我们将探讨如何在SSH框架下使用Oracle数据库进行数据的插入、更新、删除和查询操作。 **1. Struts2** Struts2是MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求和...

    基于ssh的增删查改

    ### 基于SSH框架的人力资源管理系统增删查改功能详解 在现代软件开发中,SSH(Struts + Spring + Hibernate)框架被广泛应用于构建企业级应用,特别是在人力资源管理系统的开发中。本文将深入探讨如何利用SSH框架...

    ssm+eclipse做的增删查改

    7. **DAO(Data Access Object)模式**:在SSM中,DAO层用于封装数据库操作,通过MyBatis的Mapper接口与数据库交互,实现增删查改功能。 8. **Service层**:业务逻辑层,处理业务规则和复杂的操作。它调用DAO层完成...

    WebService实现一个增删查改的接口服务(亲测可用)

    本教程将详细介绍如何利用WebService技术,特别是通过WSDL(Web Service Description Language)来创建一个包含增删查改功能的接口服务,并结合C3P0连接池和MySQL数据库进行实际操作。 1. **WSDL(Web Service ...

    一个简单的增删查改demo(jsp,jdbc,struts2)

    标题 "一个简单的增删查改demo(jsp,jdbc,struts2)" 涉及的是Web开发中的常见技术组合,主要包括三个核心组件:JSP(JavaServer Pages)、JDBC(Java Database Connectivity)以及Struts2框架。这些技术在企业级...

    maven实现对一组数据的增删查改

    总结来说,这个项目是一个基于Maven的Web应用,使用JSP进行前端展示,后端通过Servlet和JDBC实现用户登录、注册以及数据的增删查改功能。项目结构遵循了标准的Web应用布局,利用Maven管理依赖,确保了项目构建的顺利...

    mvc 实现 sql数据库的增删查改

    本文将深入探讨如何利用MVC模式实现SQL数据库的增删查改操作,并以"jsp_servlet"为例进行详细解释。 首先,我们来理解MVC模式的基本组成部分: 1. **模型(Model)**:模型是应用程序的核心,负责处理业务逻辑和...

    名片管理系统 javaweb 登录注册增删查改与回收站管理 eclipse环境 使用mysql数据库

    本项目以“名片管理系统”为例,将深入讲解JavaWeb登录注册、数据操作(增删查改)以及回收站管理的核心概念和技术。 首先,我们来看JavaWeb的基础。JavaWeb是基于Java技术的服务器端应用开发平台,主要由Servlet、...

    java实现增删查改

    在Java编程语言中,"增删查改"(CRUD...总结,Java实现增删查改主要涉及到JDBC、PreparedStatement、ResultSet等核心概念,以及事务管理和SQL语句的使用。在实际开发中,还可能结合ORM框架和设计模式,以提高代码质量。

    spring,springmvc,mybatits集成实例--增删查改

    这个集成实例主要展示了如何将这三个框架整合起来,实现数据的增删查改功能。 首先,Spring是一个全功能的Java应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...

    java web增删查改简单例子

    在Java Web开发中,"增删查改"(CRUD:Create, Read, Update, Delete)是最基础也是最核心的操作,通常用于管理数据库中的数据。本例子通过采用Model-View-Controller(MVC)设计模式,实现了对Web应用的数据操作...

    Servlet使用MVC模式(Dao\Service\Servlet)增删查改

    这些方法使用JDBC(Java Database Connectivity)API连接到MySQL数据库,执行SQL语句来完成数据的增删查改操作。 **服务(Service)** 服务层通常作为DAO和Servlet之间的中间层,它处理业务逻辑,并调用DAO来操作...

    spring mvc +mybatis框架实现增删查改

    在IT行业中,Spring MVC和MyBatis是两个非常流行的开源框架,它们被广泛...在`demo_si_test`这样的项目中,我们不仅可以学习到这两个框架的基本用法,还能了解到如何在实际环境中应用它们,实现数据的增删查改功能。

    ssm增删查改

    这个“ssm增删查改”主题主要涵盖了如何使用SSM框架进行基本的数据操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)等CRUD操作。下面我们将深入探讨SSM框架中的每个组件及其在CRUD操作中的...

Global site tag (gtag.js) - Google Analytics