当前位置:网站首页>jdbc 数据库操作
jdbc 数据库操作
2022-07-01 05:51:00 【胖丁微笑】
对这个数据库进行操作

1,在pom文件dependencies里面配置依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
2,编写用户实体类
//这里用lombok插件自动生成每个属性的get和set方法,还有带参和无参函数。引入代码在“1”
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Accessors(chain = true) //链式编程
public class User {
private int id;
private String userName;
private String userPass;
}
3,编写用户接口
public interface UserDao {
//插入
void insert(User user) throws Exception;
//修改
int update(User user) throws Exception;
//删除
int delete(int id) throws Exception;
}
4,实现类
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class UserDaoImpl implements UserDao{
//创建conection
private final String url = "jdbc:mysql://localhost:3306/aad?useSSL=false&charactorEncoding=utf8";
private final String user1 = "root";
private final String password = "123456";
//插入
@Override
public void insert(User user) throws Exception{
//加载驱动器类
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,user1,password);
//创间statement对象
String sql = "insert into admin(userName,userPass) values(?,?)";
PreparedStatement pstm = con.prepareStatement(sql);
//设置参数
pstm.setString(1, user.getUserName());
pstm.setString(2,user.getUserPass());
//执行sql
int r = pstm.executeUpdate();
//输出
System.out.println(r);
//关闭资源
pstm.close();
con.close();
}
//修改
@Override
public int update(User user) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,user1,password);
String sql = "update admin set userName = ?, userPass = ? where id = ?";
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setString(1,user.getUserName());
pstm.setString(2,user.getUserPass());
pstm.setInt(3,user.getId());
int r = pstm.executeUpdate();
pstm.close();
con.close();
return r;
}
//删除
@Override
public int delete(int id) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,user1,password);
String sql = "delete from admin where id = ?";
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setInt(1,id);
int r = pstm.executeUpdate();
return r;
}
}
5,使用junit测试
①插入测试
import org.junit.Test;
public class UserDaoImplTest {
//插入测试
@Test
public void testInsert() throws Exception{
User user = new User()
.setUserName("芜湖")
.setUserPass("123456");
UserDao userDao = new UserDaoImpl();
userDao.insert(user);
}
}
可以看到成功插入
②修改测试
//修改测试
@Test
public void testUpdate() throws Exception {
User user = new User()
.setId(1)
.setUserName("小明")
.setUserPass("55555");
userDao.update(user);
}

可以看到id为1的用户修改成功!
③删除测试
//删除测试
@Test
public void testDelete() throws Exception {
int id = 2;
userDao.delete(id);
}
id为2的数据被删除
ps:第一次写所有有很多重复代码,后面会修改封装。
6,对重复代码进行改善封装,编写一个工具类
创建一个jdbcutil类
public final class jdbcUtil01 {
private static final String url = "jdbc:mysql://localhost:3306/aad?useSSL=false&charactorEncoding=utf8";
private static final String user1 = "root";
private static final String password = "123456";
private jdbcUtil01() {
}
//加载驱动器类,只执行一次就可以了,无需返回
static {
try {
Class.forName("com.mysql.jdbc.Driver");
}catch (Exception e) {
//e.printStackTrace();
throw new RuntimeException("加载驱动器类出错,错误信息为" + e.getMessage());
}
}
public static int update(String sql, Object... params) {
Connection con =null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
//加载驱动器类
Class.forName("com.mysql.jdbc.Driver");
//创建连接对象
con = DriverManager.getConnection(url,user1,password);
//创建执行sql语句对象
pstm = con.prepareStatement(sql);
//设置参数
for(int i = 0; i < params.length; i++) {
pstm.setObject(i + 1,params[i]);
}
//执行sql
return pstm.executeUpdate();
}catch (Exception e) {
e.printStackTrace();
return 0;
}finally {
distory(con,pstm,rs);
}
}
//通用的释放资源方法。
public static void distory(Connection con, PreparedStatement pstm, ResultSet rs) {
//释放资源
if(rs != null) {
try{
rs.close();
}catch (Exception e) {
e.printStackTrace();
}
}
if(pstm != null) {
try{
pstm.close();
}catch (Exception e) {
e.printStackTrace();
}
}
if(con != null) {
try{
con.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
边栏推荐
- 2022第八届中国国际“互联网+”大学生创新创业大赛产业命题赛道开启报名!
- 关于一道01背包问题的·拓展题的思考
- POL8901 LVDS转MIPI DSI 支持旋转图像处理芯片
- SystemVerilog学习-07-类的继承和包的使用
- Cjc8988 Low Power Stereo codec with 2 stereo headphone drivers
- HCM 初学 ( 一 ) - 简介
- Dear pie users, I want to confess to you!
- restframework-simpleJWT重写认证机制
- LED lighting used in health lighting
- Timer based on LabVIEW
猜你喜欢

基于LabVIEW的计时器

What if the data in the cloud disk is harmonious?

Build 2022 上开发者最应关注的七大方向主要技术更新

It's not that you have a bad mind, but that you haven't found the right tool

On the first day of the new year, 3000 Apache servers went down

boot+jsp的高校社團管理系統(附源碼下載鏈接)

Advanced drawing skills of Excel lecture 100 (1) - use Gantt chart to show the progress of the project

Seven major technical updates that developers should pay most attention to on build 2022

Diagramme dynamique Excel

论文学习记录随笔 多标签之LIFT
随机推荐
Seven major technical updates that developers should pay most attention to on build 2022
【考研高数 武忠祥+880版 自用】高数第二章基础阶段思维导图
OneFlow源码解析:算子签名的自动推断
Oracle create user + Role
关于一道01背包问题的·拓展题的思考
Advanced drawing skills of Excel lecture 100 (1) - use Gantt chart to show the progress of the project
Preliminary level of C language -- selected good questions on niuke.com
Essay learning record essay multi label Global
亲爱的派盘用户,我要向您表白!
Idea start view project port
skywalking集成nacos动态配置
LED lighting used in health lighting
不是你脑子不好用,而是因为你没有找到对的工具
CJC8988带2个立体声耳机驱动器的低功率立体声编解码器
2022第八届中国国际“互联网+”大学生创新创业大赛产业命题赛道开启报名!
SystemVerilog学习-08-随机约束和线程控制
Call us special providers of personal cloud services for College Students
excel動態圖錶
Ssm+mysql second-hand trading website (thesis + source code access link)
Send you through the data cloud