`
体系模块架构2
  • 浏览: 1508 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JDBC增删改查

    博客分类:
  • JDBC
阅读更多
package com.zjy.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class DBUtil {
public static Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8";
String username = "root";
String password = "64419024";
Connection conn = DriverManager.getConnection(url, username,
password);
return conn;
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}

public static boolean execute(String sql) {
try {
Connection conn = DBUtil.getConnection();
Statement st = conn.createStatement();
boolean result = st.execute(sql);
st.close();
conn.close();
return result;
} catch (SQLException e) {
throw new IllegalArgumentException(e);
}
}

public static List<Map<String, Object>> executeQuery(String sql) {
try {
Connection conn = DBUtil.getConnection();
Statement st = conn.createStatement();
ResultSet set = st.executeQuery(sql);
ResultSetMetaData metaData = set.getMetaData();
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
int columnCount = metaData.getColumnCount();
while (set.next()) {
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 1; i <= columnCount; i++) {
String name = metaData.getColumnName(i);
Object value = set.getObject(name);
map.put(name, value);
}
result.add(map);
}
set.close();
st.close();
conn.close();
return result;
} catch (SQLException e) {
throw new IllegalArgumentException(e);
}
}

public static Map<String, Object> executeQuerySingle(String sql) {
List<Map<String, Object>> list = executeQuery(sql);
return list.get(0);
}

public static long getTotalRows(String sql) {
int start = sql.indexOf("from");
String countSql = "select count(*) as totalRows "
+ sql.substring(start);
Map<String, Object> row = DBUtil.executeQuerySingle(countSql);
long totalRows = (Long) row.get("totalRows");
return totalRows;
}

public static PageBean<Map<String, Object>> executePage(String sql,
long pageSize, long pageId) {
PageBean<Map<String, Object>> result = new PageBean<Map<String, Object>>();
long count = getTotalRows(sql);
long pageTotal = count % pageSize == 0 ? count / pageSize : count
/ pageSize + 1;// 修正分页总数
pageId = pageId > pageTotal ? pageTotal : pageId;// 修正分页编号
long start = (pageId - 1) * pageSize;// 计算开始位置
long end = pageId * pageSize;
end = end > count ? count : end;// 结算结束位置
sql = sql + " limit " + start + "," + pageSize;
List<Map<String, Object>> list = DBUtil.executeQuery(sql);
result.setPageContent(list);
result.setPageId(pageId);
result.setPageTotal(pageTotal);
return result;
}
}

class Customer {
private int id;
private String username;
private String password;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

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;
}

public static Customer fillMap(Map<String, Object> values) {
Customer c = new Customer();
c.setId((Integer) values.get("id"));
c.setUsername((String) values.get("username"));
c.setPassword((String) values.get("password"));
return c;
}

public static List<Customer> fillList(List<Map<String, Object>> values) {
List<Customer> result = new ArrayList<Customer>();
for (int i = 0; i < values.size(); i++) {
result.add(fillMap(values.get(i)));
}
return result;
}
public static String makeSql(Customer c){
StringBuilder sql=new StringBuilder();
    boolean whereExists=false;
    sql.append("select * from customer ");
    if(c.getId()>0){
    sql.append(whereExists?(" or id="+c.getId()):" where id="+c.getId());
    if(!whereExists){whereExists=true;}
    }
    String username=c.getUsername();
    if(username!=null&&!username.equals("")){
    sql.append(whereExists?(" or username like '%"+username)+"%'":" where username like '%"+username+"%'");
    if(!whereExists){whereExists=true;}
    }
    String password=c.getPassword();
    if(password!=null&&!password.equals("")){
    sql.append(whereExists?(" or password like '%"+password+"%'"):" where password like '%"+password+"%'");
    if(!whereExists){whereExists=true;}
    }
    return sql.toString();
}
}

class ExistsStatus<T> {
private boolean exists;
private T t;

public boolean isExists() {
return exists;
}

public void setExists(boolean exists) {
this.exists = exists;
}

public T getT() {
return t;
}

public void setT(T t) {
this.t = t;
}
}

class PageBean<T> {
private List<T> pageContent;
private long pageId;
private long pageTotal;

public List<T> getPageContent() {
return pageContent;
}

public void setPageContent(List<T> pageContent) {
this.pageContent = pageContent;
}

public long getPageId() {
return pageId;
}

public void setPageId(long pageId) {
this.pageId = pageId;
}

public long getPageTotal() {
return pageTotal;
}

public void setPageTotal(long pageTotal) {
this.pageTotal = pageTotal;
}
}

class CustomerDao {
public  boolean insert(Customer customer) {
String sql = "insert into customer(username,password)values('"
+ customer.getUsername() + "','" + customer.getPassword()
+ "');";
return DBUtil.execute(sql);
}

public  boolean update(Customer customer) {
String sql = "update customer set username='" + customer.getUsername()
+ "',password='" + customer.getPassword() + "' where id=7";
return DBUtil.execute(sql);
}

public boolean  delete(int id) {
String sql = "delete from customer where id=" + id;
return DBUtil.execute(sql);
}
public List<Customer> query(Customer c){
    List<Map<String,Object>> values=DBUtil.executeQuery(Customer.makeSql(c));
    return Customer.fillList(values);
}
public  ExistsStatus<Customer> findById(int id) {
Customer c=new Customer();
c.setId(id);
List<Customer> list =query(c);
ExistsStatus<Customer> result = new ExistsStatus<Customer>();
if (list.size() > 0) {
Customer customer =list.get(0);
result.setT(customer);
result.setExists(true);
}
return result;
}
public PageBean<Customer> getPage(Customer c,int pageId,int pageSize){
String sql=Customer.makeSql(c);
PageBean<Map<String,Object>> page=DBUtil.executePage(sql,pageId,pageSize);
PageBean<Customer> result=new PageBean<Customer>();
result.setPageId(page.getPageId());
result.setPageTotal(page.getPageTotal());
result.setPageContent(Customer.fillList(page.getPageContent()));
return result;
}
}

public class Test {
public static void main(String[] args) {
String sql = "select * from customer ";
int pageSize = 3;
int pageId = 2;
PageBean<Map<String,Object>> pageBean=DBUtil.executePage(sql, pageSize,pageId);
List<Map<String, Object>> list = pageBean.getPageContent();
System.out.println(sql);
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
Integer id = (Integer) map.get("id");
String username = (String) map.get("username");
String password = (String) map.get("password");
System.out.println(id + " " + username + " " + password);
}
}

}
分享到:
评论

相关推荐

    Servlet +jsp+jdbc增删改查学生信息

    【Servlet +jsp+jdbc增删改查学生信息】是一个经典的Web开发示例,它结合了Java服务器页面(JSP)、Servlet和Java数据库连接(JDBC)技术,用于创建一个简单的学生信息管理系统。这个项目适用于初学者,可以帮助他们...

    struts+jdbc增删改查

    总的来说,"struts+jdbc增删改查"这个小案例涵盖了Web开发中基础的数据操作,是学习Java Web开发的典型应用场景。通过这个案例,开发者可以深入理解Struts 2的架构以及如何使用JDBC进行数据库操作,为进一步学习更...

    Struts2 JDBC 增删改查

    在这个"Struts2 JDBC 增删改查"项目中,我们将探讨如何结合这两者来构建一个简单的数据管理应用。 首先,让我们深入理解Struts2的核心概念。Struts2框架提供了动作(Action)和结果(Result)的概念,动作负责处理...

    简单的jdbc增删改查

    对于增删改查操作,使用`Statement`或`PreparedStatement`。例如,插入数据: ```java String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); ...

    Spring JDBC 增删改查

    Spring JDBC是Spring框架的一部分,它提供了一种抽象层,使得我们能够更方便地使用Java数据库连接(JDBC)来处理数据库操作,如增删改查(CRUD)。在这个主题下,我们将深入探讨Spring JDBC的核心概念、配置、以及...

    通用的jdbc增删改查

    通用的jdbc增删改查,仅仅只是两个通用的方法,利用反射和泛型

    struts2+jdbc增删改查

    总的来说,`struts2+jdbc增删改查`的项目是一个适合初学者实践的实例,涵盖了Web开发中基础的数据库操作和业务流程处理。通过这个项目,开发者可以学习到如何在Struts2框架下利用JDBC与数据库交互,同时掌握JSP页面...

    JSP+JDBC增删改查

    在"JSP+JDBC增删改查"的项目中,我们首先需要创建一个web项目,这通常包含Web-INF目录、WEB-INF下的web.xml配置文件、以及存放JSP页面的目录。在JSP页面中,我们可以使用EL(Expression Language)和JSTL(Java...

    JDBC增删改查简单例子

    本文将详细讲解如何使用JDBC进行用户数据的增删改查操作。 首先,我们需要理解JDBC的基本流程,它包括加载驱动、建立连接、创建Statement对象、执行SQL语句以及关闭资源。以下是一个简单的示例: 1. **加载驱动**...

    jdbc增删改查

    【标题】:“jdbc增删改查” 在Java编程领域,JDBC(Java Database Connectivity)是连接Java应用程序与数据库的关键技术。它提供了一组接口和类,使得开发者能够以标准化的方式与各种关系型数据库进行交互,执行...

    jdbc增删改查加分页

    本篇主要围绕"jdbc增删改查加分页"这一主题展开,结合给出的标签"源码"和"工具",将深入讲解JDBC在数据库CRUD(Create、Read、Update、Delete)操作以及分页查询中的应用。 首先,我们需要了解JDBC的基本使用流程:...

    java十分经典的jdbc增删改查程序,含sql语句

    在这个经典的JDBC增删改查程序中,我们可以深入理解JDBC的基本操作流程和核心概念。 1. **连接数据库**: 首先,我们需要通过`Class.forName()`加载数据库驱动,然后使用`DriverManager.getConnection()`方法建立...

    jdbc完全封装实现增删改查

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

    一个封装好的java JDBC增删改查类

    一个封装好的java JDBC增删改查类

    JDBC增删改查小例子

    这个JDBC增删改查的小例子,虽然简单,但涵盖了JDBC基本操作的关键步骤,对于初学者来说是非常有价值的实践项目。通过这个示例,你可以更好地理解和掌握如何在实际应用中使用JDBC进行数据库操作。

    JSP+JDBC增删改查操作

    在Web项目开发中,"JSP+JDBC增删改查操作"是一个常见的技术组合,用于构建动态数据驱动的网页应用。JSP(JavaServer Pages)是Java平台上的服务器端脚本语言,它允许开发者在HTML页面中嵌入Java代码,以实现动态内容...

    jdbc.rar_JDBC增删改查_java jdbc_jdbc_jdbc 增删改查_jdbc封装

    在这个“jdbc.rar”压缩包中,我们很显然会看到关于使用Java JDBC进行数据操作的示例代码,特别是增删改查(CRUD)功能的实现以及可能的封装。 首先,让我们理解JDBC的基本工作流程: 1. **加载驱动**:在使用JDBC...

    jdbc.rar_JDBC增删改查_inq6z_java_jdbc

    **三、JDBC增删改查操作** 1. **增加(Insert)**:使用PreparedStatement的setXXX()方法设置参数,然后调用executeUpdate()插入数据。 2. **删除(Delete)**:根据条件构造SQL删除语句,执行executeUpdate()。 ...

    jabc.rar_JDBC增删改查_java jdbc

    总结来说,"jabc.rar_JDBC增删改查_java jdbc"的示例旨在教育开发者如何使用Java的JDBC API与数据库进行交互,涵盖基本的数据库操作,这对于任何Java开发者理解和构建数据驱动的应用都是至关重要的技能。通过实践...

Global site tag (gtag.js) - Google Analytics