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对象的封装,只需调用则可对数据库进行CRUD操作
"java增删改查JDBC封装类(泛型封装)"这个主题是关于如何利用泛型来优化JDBC操作,以提高代码的可读性、安全性和复用性。以下将详细讲解这个主题涉及的知识点。 1. **JDBC基础**: - JDBC是Java中连接数据库的标准...
在"layui数据表格显示增删查改.zip"这个项目中,我们主要关注的是如何利用layui实现数据表格的功能,并结合后端技术进行数据操作。下面将详细介绍这个项目涉及的关键知识点。 1. layui数据表格: layui的表格组件...
在本项目中,“jsf+javabean+jdbc完成对表增删查改”指的是使用JSF与JavaBean以及JDBC技术来实现对数据库中表格的基本操作:添加(Insert)、删除(Delete)、查询(Query)和修改(Update)。 首先,让我们深入...
标题 "jpsJavaWep增删查改.zip" 暗示了这是一个关于使用Java Web进行CRUD操作的项目或教程。"jps"可能是Java进程服务(Java Process Service)的缩写,它通常用于查看Java应用程序的运行状态。在这个上下文中,它...
在这个"Struts2+JDBC增删查改"项目中,我们将会深入探讨如何利用Struts2作为MVC框架与JDBC进行数据库交互。 首先,Struts2是一个基于MVC设计模式的开源Web应用框架,它简化了Java Servlets和JSP的开发。Struts2的...
在"SSH+Oracle增删查改"的主题中,我们将探讨如何在SSH框架下使用Oracle数据库进行数据的插入、更新、删除和查询操作。 **1. Struts2** Struts2是MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求和...
### 基于SSH框架的人力资源管理系统增删查改功能详解 在现代软件开发中,SSH(Struts + Spring + Hibernate)框架被广泛应用于构建企业级应用,特别是在人力资源管理系统的开发中。本文将深入探讨如何利用SSH框架...
7. **DAO(Data Access Object)模式**:在SSM中,DAO层用于封装数据库操作,通过MyBatis的Mapper接口与数据库交互,实现增删查改功能。 8. **Service层**:业务逻辑层,处理业务规则和复杂的操作。它调用DAO层完成...
本教程将详细介绍如何利用WebService技术,特别是通过WSDL(Web Service Description Language)来创建一个包含增删查改功能的接口服务,并结合C3P0连接池和MySQL数据库进行实际操作。 1. **WSDL(Web Service ...
标题 "一个简单的增删查改demo(jsp,jdbc,struts2)" 涉及的是Web开发中的常见技术组合,主要包括三个核心组件:JSP(JavaServer Pages)、JDBC(Java Database Connectivity)以及Struts2框架。这些技术在企业级...
总结来说,这个项目是一个基于Maven的Web应用,使用JSP进行前端展示,后端通过Servlet和JDBC实现用户登录、注册以及数据的增删查改功能。项目结构遵循了标准的Web应用布局,利用Maven管理依赖,确保了项目构建的顺利...
本文将深入探讨如何利用MVC模式实现SQL数据库的增删查改操作,并以"jsp_servlet"为例进行详细解释。 首先,我们来理解MVC模式的基本组成部分: 1. **模型(Model)**:模型是应用程序的核心,负责处理业务逻辑和...
本项目以“名片管理系统”为例,将深入讲解JavaWeb登录注册、数据操作(增删查改)以及回收站管理的核心概念和技术。 首先,我们来看JavaWeb的基础。JavaWeb是基于Java技术的服务器端应用开发平台,主要由Servlet、...
在Java编程语言中,"增删查改"(CRUD...总结,Java实现增删查改主要涉及到JDBC、PreparedStatement、ResultSet等核心概念,以及事务管理和SQL语句的使用。在实际开发中,还可能结合ORM框架和设计模式,以提高代码质量。
这个集成实例主要展示了如何将这三个框架整合起来,实现数据的增删查改功能。 首先,Spring是一个全功能的Java应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...
在Java Web开发中,"增删查改"(CRUD:Create, Read, Update, Delete)是最基础也是最核心的操作,通常用于管理数据库中的数据。本例子通过采用Model-View-Controller(MVC)设计模式,实现了对Web应用的数据操作...
这些方法使用JDBC(Java Database Connectivity)API连接到MySQL数据库,执行SQL语句来完成数据的增删查改操作。 **服务(Service)** 服务层通常作为DAO和Servlet之间的中间层,它处理业务逻辑,并调用DAO来操作...
在IT行业中,Spring MVC和MyBatis是两个非常流行的开源框架,它们被广泛...在`demo_si_test`这样的项目中,我们不仅可以学习到这两个框架的基本用法,还能了解到如何在实际环境中应用它们,实现数据的增删查改功能。
这个“ssm增删查改”主题主要涵盖了如何使用SSM框架进行基本的数据操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)等CRUD操作。下面我们将深入探讨SSM框架中的每个组件及其在CRUD操作中的...