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 ...
随机推荐
- 国产深度学习框架mindspore-1.3.0 gpu版本无法进行源码编译
官网地址: https://www.mindspore.cn/install 所有依赖环境 进行sudo make install 安装,最终报错: 错误记录信息: cat /tmp/mind ...
- MySQL中的redo log和undo log
MySQL中的redo log和undo log MySQL日志系统中最重要的日志为重做日志redo log和归档日志bin log,后者为MySQL Server层的日志,前者为InnoDB存储引擎 ...
- mysql - 按条件统计
在表中分别统计mt =0 和 mt>0 的个数 方法一:select count(if(mt=0,1,null)) as a,count(if(mt>0,1,null)) as b fro ...
- SDN与OpenFlow架构--初识
一,为什么需要SDN 1,传统网络的缺点: a,传统网络及其设备的只可配置,不可编程,只能按照已定义好的协议处理或转发数据,不能适应需求新变化,不能自主开发新功能. 如购买一个电饭煲,可以煮饭,煲汤. ...
- 【洛谷P1795 无穷的序列_NOI导刊2010提高(05)】模拟
分析 map搞一下 AC代码 #include <bits/stdc++.h> using namespace std; map<int,int> mp; inline int ...
- java 向Redis中存放数据 List<Device>转String
/** * redis服务 */ @Autowired private RedisService redisService; //创建 Device 对象 Device no = new Devic ...
- Geoserver通过ajax跨域访问服务数据的方法(含用户名密码认证的配置方式)
Goeserver数据有两种,一种需进行用户密码的权限认证,一种无须用户密码.对于网上跨域访问Geoserver数据的种种方法,对这2种数据并非通用. 笔者将Geoserver官方下载的Geoserv ...
- odoo时间过滤
Odoo中本日.本月.上月过滤器实现方法 Odoo中本日.本月.上月过滤器实现方法<filter string="今日订单" name="today" ...
- GitHub秘钥(SSH Key)
一.公钥的作用 公钥一般给服务器,别人权限中加入我给的公钥,当我们从远地仓库中下载项目(git clone xxx)的时 那个服务器通过他的绑定的公钥来匹配我的私钥,如果匹配,则就可以正常下载,如果不 ...
- 项目去O实践
现状(自下而上) 1.Oracle数据库,表,序列,存储过程,视图 2.ibatis框架,映射xml中的sql语句 3.应用中通过指定字符串的形式获取查询结果 目标 1.置换数据库为PG数据库,迁 ...