jdbc操作mysql(二):封装
案例四:封装共有操作
封装一个数据库的会话的类
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(二):封装的更多相关文章
- jdbc操作mysql
本文讲述2点: 一. jdbc 操作 MySQL .(封装一个JdbcUtils.java类,实现数据库表的增删改查) 1. 建立数据库连接 Class.forName(DRIVER); connec ...
- jdbc操作mysql(三):利用注解封装
案例五:利用注解封装 重复步骤 我们使用jdbc操作mysql时发现,操作不同表中数据,所写的方法基本相同:比如我们根据id向用户表添加数据,根据id删除商品表的数据,或者查询所有数据并用list集合 ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- [自动化专题]JDBC操作mysql时遇到的拦路虎
在挫折中成长,在错误中学习.聊聊我们在Selenium自动化中使用JDBC操作mysql数据库中遇到的那些拦路虎: 错误一:Can not issue data manipulation statem ...
- JDBC操作MySQL(crud)
这两天复习了一下JDBC操作MySQL,把crud操作的例子记一下, 类库链接(mysql-connector-java-5.1.37-bin.jar):http://files.cnblogs.co ...
- JDBC操作MySQL数据库案例
JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
- 原生Jdbc操作Mysql数据库开发步骤
原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤: 1.导入数据库驱动包 ...
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...
- 使用JDBC操作MySQL
使用JDBC操作MySQL 步骤 加载驱动 连接数据库 操作数据库(增删改查) 关闭结果集,操作,数据库 准备工作 java连接MySQL的jar包 加载数据库驱动 public class Load ...
- JavaWeb用Jdbc操作MySql数据库(一)
一.添加开发包.在JavaWeb中用jdbc操作数据库,使用方法与java一样,但是在处理开发包的问题上有点差别.JavaWeb不能将mysql-connector-java-5.1.7-bin.ja ...
随机推荐
- CSS居中对齐终极指南
本文首发于我的公众号:前端新世界 欢迎关注 本文将讨论可用于居中对齐元素的6种CSS技术(按照最佳实践排序),以及每一种技术最适合应用的场景.这里,居中对齐指的是将元素放置在其父元素的水平和垂直中心. ...
- python里的StringIO
Python2中StringIO调用方法如下: import StringIO iost = StringIO.StringIO() Python3中已将StringIO归入io,调用方法如下: im ...
- 第十三篇 -- QMainWindow与QAction(新建-打开-保存)
效果图: 添加了三个Action,分别是新建,打开,和保存,没有具体写相应的功能,只是提供了一个接口,可以自己写相应的功能.这次不仅将这些Action放在了工具栏,还将其添加到了菜单栏.方法同样是直接 ...
- Linux 各个命令的缩写原型
cd:(change derictery)更换目录: pwd:(Print Working Directory)显示当前工作目录: mk:(make directory)创建目录: ...
- SpringBoot+ELK日志系统搭建
一.ELK是什么 "ELK"是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kibana.Elasticsearch 是一个搜索和分 ...
- Idea快捷键 累积大全
分类 Editing 这个 Searching/Replcae Navigation Atl +1 打开和关闭左侧p ...
- Vue--启动后到加载第一个页面的过程
地址栏http://localhost:8088/#/填写密码登录后自动跳转到http://localhost:8088/#/home/msg/workerpush 一\ 得先跳转到login页面 { ...
- Docker未授权漏洞(2375)
漏洞验证 直接使用浏览器访问 http://ip:2335 http://ip:2335/version http://ip:2335/info docker -H tcp://ip:2375 ver ...
- 论文笔记:(CVPR2017)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
目录 一. 存在的问题 二. 解决的方案 1.点云特征 2.解决方法 三. 网络结构 四. 理论证明 五.实验效果 1.应用 (1)分类: ModelNet40数据集 (2)部件分割:ShapeNet ...
- 小白学习vue第三天,从入门到精通(computed计算属性)
computed计算属性 <body> <div id="app"> <div>{{myName}}</div> </div& ...