0.准备工作

开发工具: MySQL数据库, intelliJ IDEA2017.

准备jar包: mysql-connector-java-5.1.28-bin.jar(其他均可)

1. 数据库数据准备

2. 项目结构图示

3.代码

实体类Book.java

package com.zzuli.entity;

import java.util.Date;

/**
*
* 图书实体类
* Created by hejjon on 2019/5/25.
*/
public class Book {
private int id;
private String bookName;
private String author;
private Date pubDate; // 出版日期 util.Date public Book() {
} public Book(int id, String bookName, String author, Date pubDate) {
this.id = id;
this.bookName = bookName;
this.author = author;
this.pubDate = pubDate;
} public Book(String bookName, String author, Date pubDate) {
this.bookName = bookName;
this.author = author;
this.pubDate = pubDate;
} public int getId() {
return id;
} public String getBookName() {
return bookName;
} public String getAuthor() {
return author;
} public Date getPubDate() {
return pubDate;
} public void setId(int id) {
this.id = id;
} public void setBookName(String bookName) {
this.bookName = bookName;
} public void setAuthor(String author) {
this.author = author;
} public void setPubDate(Date pubDate) {
this.pubDate = pubDate;
} @Override
public String toString() {
return "Book{" +
"id=" + id +
", bookName='" + bookName + '\'' +
", author='" + author + '\'' +
", pubDate=" + pubDate +
'}';
}
}

Dao层接口 BookDao.java

package com.zzuli.dao;

import com.zzuli.entity.Book;

import java.util.List;

/**
* Created by hejjon on 2019/5/25.
*/
public interface BookDao { /**
* 增添图书
* @param book 要添加的book对象
* @return
*/
int insertBook(Book book); /**
* 删除指定id的图书
* @param id 要删除的图书的id
* @return
*/
int deleteBook(int id); /**
* 修改图书
* @param book 修改后的图书
* @return
*/
int updateBook(Book book); /**
* 查找指定书名的图书
* @param bookName
* @return
*/
Book selectBookByName(String bookName); List<Book> selectAllBook();
}

Dao层实现类: BookDaoImpl.java

package com.zzuli.dao.impl;

import com.zzuli.dao.BookDao;
import com.zzuli.entity.Book; import java.sql.*;
import java.util.ArrayList;
import java.util.List; /**
* Created by hejjon on 2019/5/25.
*/
public class BookDaoImpl implements BookDao { private final String jdbcDriver = "com.mysql.jdbc.Driver";
private final String url = "jdbc:mysql://localhost:3306/db_book";
private final String userName = "root";
private final String password = "123123"; @Override
public int insertBook(Book book) {
int n = 0;
String sql = "insert into t_book values (default,?,?,?)";
Connection conn = null;
PreparedStatement ps = null;
java.sql.Date pubDate = null;
try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
// 设置 ? 的值
ps.setString(1, book.getBookName());
ps.setString(2, book.getAuthor());
pubDate = new java.sql.Date(book.getPubDate().getTime());
ps.setDate(3, pubDate);
// 执行sql
n = ps.executeUpdate(); } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally { // 关闭数据库资源
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return n;
} @Override
public int deleteBook(int id) {
String sql = "delete from t_book where id=?";
int n = 0;
Connection conn = null;
PreparedStatement ps = null; try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
// 设置 ? 的值
ps.setInt(1, id);
// 执行sql
n = ps.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} return n;
} @Override
public int updateBook(Book book) {
String sql = "update t_book set bookName=?, author=?, pubDate=? where id=?";
int n = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
ps.setString(1, book.getBookName());
ps.setString(2, book.getAuthor());
ps.setDate(3, new java.sql.Date(book.getPubDate().getTime()));
ps.setInt(4, book.getId());
n = ps.executeUpdate(); } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return n;
} @Override
public Book selectBookByName(String bookName) {
String sql = "select * from t_book where bookName=?";
Book book = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
ps.setString(1, bookName);
rs = ps.executeQuery(); if (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("bookName");
String author = rs.getString("author");
java.util.Date pubDate = rs.getDate("pubDate");
book = new Book(id, name, author, pubDate);
} } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return book;
} @Override
public List<Book> selectAllBook() {
String sql = "select * from t_book";
List<Book> list = new ArrayList<>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null; try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
// 获取结果集
rs = ps.executeQuery();
// 遍历结果集
while (rs.next()) {
int id = rs.getInt("id");
String bookName = rs.getString("bookName");
String author = rs.getString("author");
Date pubDate = rs.getDate("pubDate"); Book book = new Book(id, bookName, author, pubDate);
list.add(book);
} } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} return list;
}
}

测试类:Test.java

package com.zzuli.test;

import com.zzuli.dao.BookDao;
import com.zzuli.dao.impl.BookDaoImpl;
import com.zzuli.entity.Book; import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; /**
* 测试类
* Created by hejjon on 2019/5/25.
*/
public class Test {
public static void main(String[] args) {
// testInsert();
// testDelete();
// sestUpdate();
// testSelect(); testSelectAllBook(); } private static void testSelectAllBook() {
BookDao bookDao = new BookDaoImpl(); List<Book> list = new ArrayList<>(); list = bookDao.selectAllBook(); for (Book book : list) {
System.out.println(book);
}
} // 测试按书名查找图书
public static void testSelect() {
BookDao bookDao = new BookDaoImpl();
Book book = bookDao.selectBookByName("西游记"); System.out.println(book);
} // 测试修改图书方法
public static void testUpdate() {
// 创建dao层实现类对象
BookDao bookDao = new BookDaoImpl();
String dateStr = "1788-06-15";
Date pubDate = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
pubDate = df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
} Book book = new Book(2, "西游记", "吴承恩", pubDate); int i = bookDao.updateBook(book); if (i > 0) {
System.out.println("图书修改成功");
} else {
System.out.println("图书修改失败");
}
} // 测试删除图书方法
public static void testDelete() {
BookDao bookDao = new BookDaoImpl();
int i = bookDao.deleteBook(5); if (i > 0) {
System.out.println("删除图书成功");
} else {
System.out.println("删除图书失败");
}
} // 测试添加图书方法
public static void testInsert() {
// 创建dao层实现类对象
BookDao bookDao = new BookDaoImpl();
String dateStr = "1678-09-24";
Date pubDate = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
pubDate = df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
} Book book = new Book("鹿鼎记", "张三", pubDate); int i = bookDao.insertBook(book); if (i > 0) {
System.out.println("图书添加成功");
} else {
System.out.println("图书添加失败");
}
}
}

4.总结:

java.sql.Date, java.util.Date, String 之间的相互转换:
// String ---> java.util.Date       parse()方法
String DateStr = "1997-02-24";
Date date = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
date = df.parse(DateStr);
} catch (ParseException e) {
e.printStackTrace();
} // java.util.Date ---> String format()方法
System.out.println(df.format(date)); // 1997-02-24 System.out.println(System.currentTimeMillis()); // 1558864421743 // java.util.Date ---> java.sql.Date
java.util.Date utilDate = new java.util.Date(1558864204513L); // 是long类型 L别丢了 java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
System.out.println(utilDate); // Sun May 26 17:50:04 CST 2019
System.out.println(sqlDate); // 2019-05-26
 

 

JDBC简单增删改查实现(单表)的更多相关文章

  1. MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能

    数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...

  2. MySQL 增删改查(单表)

    1.sql 新增语句 表中插入数据 insert into + 表名 values(字段1value1,字段2value1,字段3value1),(字段1value2,字段2value2,字段3val ...

  3. Oracle使用JDBC进行增删改查 表是否存在

    Oracle使用JDBC进行增删改查 数据库和表 table USERS (   USERNAME VARCHAR2(20) not null,   PASSWORD VARCHAR2(20) ) a ...

  4. Mybatis实现简单增删改查

    Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...

  5. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

  6. 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

    专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...

  7. JDBC基础学习(一)—JDBC的增删改查

    一.数据的持久化     持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各 ...

  8. SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询

    SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...

  9. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

随机推荐

  1. 图上的并行处理 Parallel Processing of Graphs

    Graph 本次学术前沿讲座由邵斌老师主讲,标题已经揭示了主题:Graph.1.5h的talk,听完自觉意犹未尽.本来以为是一节自己没接触过的图形学的talk,没想到讲的很多内容都跟自己学过的很多东西 ...

  2. 拷贝Maven依赖jar包到指定目录

    一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: 1 mvn dependency:copy-de ...

  3. openssl 自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书

    server { listen 80; listen 443 ssl; server_name ~^((cloud)|(demo-cloud)|(demo2-cloud)|(approval1))(( ...

  4. Java学习-054-Mybatis IN查询,通过 foreach 获取列表数据

    通过如下语句查询商品订单信息: ,,,) 在 Mapper.java 中定义如下接口: List<GoodsOrder> findGoodsOrderByIds(String ids); ...

  5. SpringBoot Aop打印参数

    import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import lombok.extern.slf ...

  6. SpringCloud基础

    SpringCloud极大的简化了分布式系统的开发,实现了微服务的快速部署和灵活应用 SpringCloud主要框架 * 服务发现--Netfix Eureka * 服务调用--Netfix Feig ...

  7. [Golang] http.Post导致goroutine泄漏

    记录一个用http.Post的问题 if _, err := http.Post("http://127.0.0.1:8080", "", nil); nil ...

  8. Entity Framework Core for Console

    包 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCor ...

  9. es查询和更新 语句示例

    文档目录: https://www.elastic.co/guide/index.html GET _search { "query": { "match_all&quo ...

  10. c# – Asp.Net Core MVC中Request.IsAjaxRequest()在哪里?

    要了解有关新的令人兴奋的Asp.Net-5框架的更多信息,我正在使用最新发布的Visual Studio 2015 CTP-6来构建一个Web应用程序. 大多数事情看起来真的很有希望,但我似乎找不到R ...