案例四:封装共有操作

封装一个数据库的会话的类

import java.sql.*;

public class ConnectionUtil {
/**
* 获取连接对象的方法,返回一个Connection
* 方法体中是共有操作:加载驱动,建立连接
*/
public static Connection getConnection() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jdbctest?serverTimezone=GMT";
String user = "root";
String password = "root";
Connection connection = DriverManager.getConnection(url, user, password);
return connection;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 关闭连接对象的方法,传入参数Connection对象
* 方法体中是共有操作:判断该对象是否为连接状态,是则关闭
*/
public static void close(Connection conn) {
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} /**
* 关闭PreparedStatement对象的方法,传入参数为该对象
* 方法体中是共有操作:判断该对象是否为连接状态,是则关闭
*/
public static void close(PreparedStatement ps) {
if(ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} /**
* 关闭结果集对象的方法,传入参数为ResultSet对象
* 方法体中是共有操作:判断该对象是否为连接状态,是则关闭
*/
public static void close(ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

封装对用户类的crud方法

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; public class UserManager {
/**
* 封装添加用户的方法
*/
public void add(User user) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = ConnectionUtil.getConnection();
String sql = "insert into t_user(username, age, sex, birthday) value(?, ?, ?, ?)";
ps = conn.prepareStatement(sql);
//setString 将指定的参数设置为给定的Java String值
ps.setString(1, user.getUsername()); // 第一个占位符传入的参数
ps.setInt(2, user.getAge());
ps.setString(3, user.getSex());
ps.setDate(4, new Date(user.getBirthday().getTime()), null);
int rows = ps.executeUpdate(); // 受影响行
System.out.println("->插入成功" + rows + "条信息");
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionUtil.close(ps);
ConnectionUtil.close(conn);
}
} /**
* 根据id删除用户
*/
public void del(int id) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = ConnectionUtil.getConnection();
String sql = "delete from t_user where id=?";
ps = conn.prepareCall(sql);
ps.setInt(1, id);
int i = ps.executeUpdate();
System.out.println("删除成功" + i + "条信息");
}catch (Exception e){
e.printStackTrace();
}finally {
ConnectionUtil.close(ps);
ConnectionUtil.close(conn);
}
} /**
* 根据id查询用户信息
*/
public User getUser(int id) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = ConnectionUtil.getConnection();
String sql = "select * from t_user where id=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
while(rs.next()) {
User u = new User();
// getInt 检索的当前行中指定列的值
u.setId(rs.getInt("id"));
// getString 检索的当前行中指定列的值
u.setUsername(rs.getString("username"));
u.setAge(rs.getInt("age"));
u.setBirthday(rs.getDate("birthday"));
u.setSex(rs.getString("sex"));
return u;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionUtil.close(rs);
ConnectionUtil.close(ps);
ConnectionUtil.close(conn);
}
return null;
} /**
* 查询所有用户的方法
*/
public List<User> getAll() {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = ConnectionUtil.getConnection();
String sql = "select * from t_user";
ps = conn.prepareStatement(sql);
// 返回结果集
rs = ps.executeQuery();
List<User> lists = new ArrayList<User>();
while(rs.next()) {
User u = new User();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setAge(rs.getInt("age"));
u.setBirthday(rs.getDate("birthday"));
u.setSex(rs.getString("sex"));
lists.add(u);
}
return lists;
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionUtil.close(rs);
ConnectionUtil.close(ps);
ConnectionUtil.close(conn);
}
return null;
} /**
* 更新用户信息的方法
*/
public int update(User user){
Connection conn = null;
PreparedStatement ps = null;
try {
conn = ConnectionUtil.getConnection();
String sql = "update t_user set age=?,username=?,sex=?,birthday=? where id=?";
ps = conn.prepareCall(sql);
ps.setInt(1, user.getAge());
ps.setString(2, user.getUsername());
ps.setString(3, user.getSex());
ps.setDate(4, new Date(user.getBirthday().getTime()), null);
ps.setInt(5, user.getId());
int i = ps.executeUpdate();
System.out.println("跟新成功" + i + "条信息");
}catch (Exception e){
e.printStackTrace();
}finally {
ConnectionUtil.close(ps);
ConnectionUtil.close(conn);
}
return 0;
} }

测试

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List; public class UserTest { public static void main(String[] args) throws ParseException {
UserManager um = new UserManager();
User u = new User();
u.setUsername("大力");
u.setAge(20);
u.setSex("男");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
u.setBirthday(sdf.parse("1990-10-1"));
//插入一条数据
um.add(u); //查询id为1的用户信息
User user = um.getUser(1);
System.out.println("id=1 ->" + user.getUsername()); //查询所有用户
List<User> list = um.getAll();
for(User u1 : list) {
System.out.println("User ->" + u1.getUsername());
} //更新id为1的用户信息
User user1 = new User();
user1.setId(1);
user1.setUsername("狗剩");
user1.setAge(15);
user1.setSex("男");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
user1.setBirthday(sdf1.parse("2021-1-1"));
um.update(user1); //删除id为1的用户信息
um.del(1);
} }
  • 测试结果
->插入成功1条信息
id=1 ->小花
User ->小花
User ->大力
跟新成功1条信息
删除成功1条信息

jdbc操作mysql(二):封装的更多相关文章

  1. jdbc操作mysql

    本文讲述2点: 一. jdbc 操作 MySQL .(封装一个JdbcUtils.java类,实现数据库表的增删改查) 1. 建立数据库连接 Class.forName(DRIVER); connec ...

  2. jdbc操作mysql(三):利用注解封装

    案例五:利用注解封装 重复步骤 我们使用jdbc操作mysql时发现,操作不同表中数据,所写的方法基本相同:比如我们根据id向用户表添加数据,根据id删除商品表的数据,或者查询所有数据并用list集合 ...

  3. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  4. [自动化专题]JDBC操作mysql时遇到的拦路虎

    在挫折中成长,在错误中学习.聊聊我们在Selenium自动化中使用JDBC操作mysql数据库中遇到的那些拦路虎: 错误一:Can not issue data manipulation statem ...

  5. JDBC操作MySQL(crud)

    这两天复习了一下JDBC操作MySQL,把crud操作的例子记一下, 类库链接(mysql-connector-java-5.1.37-bin.jar):http://files.cnblogs.co ...

  6. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  7. 原生Jdbc操作Mysql数据库开发步骤

    原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤:        1.导入数据库驱动包       ...

  8. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  9. 使用JDBC操作MySQL

    使用JDBC操作MySQL 步骤 加载驱动 连接数据库 操作数据库(增删改查) 关闭结果集,操作,数据库 准备工作 java连接MySQL的jar包 加载数据库驱动 public class Load ...

  10. JavaWeb用Jdbc操作MySql数据库(一)

    一.添加开发包.在JavaWeb中用jdbc操作数据库,使用方法与java一样,但是在处理开发包的问题上有点差别.JavaWeb不能将mysql-connector-java-5.1.7-bin.ja ...

随机推荐

  1. 搭建NFS服务

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建yum仓库的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相关软件版本和主 ...

  2. Java程序员必学知识点

    JVM无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了) 详细介绍了JVM有关于线 ...

  3. maven 标签 关于<import>标签

      标签用途:在dependecyManagement元素下用,合并此import标签上级dependency的groupId和artid中指向依赖的dependecyManagement内容   标 ...

  4. 使用C#winform编写渗透测试工具--暴力破解

    使用C#winform编写渗透测试工具--暴力破解 这篇文章主要介绍使用C#winform编写渗透测试工具--暴力破解.暴力破解是指通过利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式.简单来说就 ...

  5. 开机时自动启动的AutoHotkey脚本

    ;;; 开机时自动启动的AutoHotkey脚本;; 此脚本修改时间 2019年06月18日20时48分;; 计时器创建代码段 ------------------------------------ ...

  6. MySQL:JDBC批量插入数据的效率

    平时使用mysql插入.查询数据都没有注意过效率,今天在for循环中使用JDBC插入1000条数据居然等待了一会儿 就来探索一下JDBC的批量插入语句对效率的提高 首先进行建表 create tabl ...

  7. Java自定义注解使用和详解

    前言 我们在做开发springboot 项目时候会遇到各种各样注解,使用各种各样注解,极大的简便了我们开发流程,方式,从JDK5开始支持 注解是Java语言的一种强大的功能 可以理解为代码上的特殊标记 ...

  8. Java多线程间的数据共享

    下面的程序演示了一个对象被两个线程访问的方法,"monitor.gotMessage();"这一句虽然是monitor对象的方法,但却是运行在"MyObject" ...

  9. Redis实现分布式锁那件事

    今天我们来聊一聊分布式锁的那些事. 相信大家对锁已经不陌生了,我们在多线程环境中,如果需要对同一个资源进行操作,为了避免数据不一致,我们需要在操作共享资源之前进行加锁操作.在计算机科学中,锁(lock ...

  10. Dubbo系列讲解之服务注册【3万字长文分享】 23/100 发布文章

    服务注册的几个步骤   对于RPC框架的服务注册,一般包含了如下的流程: 加载服务提供者,可能是通过xml配置的,也可能是通过扫描注解的 实例化服务提供者,并以服务接口作为key,实现类作为value ...