BaseDao封装增删改查

文章目录

  • 什么是BaseDao
  • 操作代码
    • 增删改
    • 查询单个数据
    • 查询多个数据
  • 总结

什么是BaseDao

BaseDao是:

数据库里负责增加,删除,修改,查询
具体来说是一种接口代码,公共方法的接口类。
在dao层新建basedao,其他dao层接口继承basedao
相当于父类继承子类
用来创建其他dao包

操作代码

增删改

import java.sql.*;public class BaseDao {private String driver = "com.mysql.cj.jdbc.Driver";private String url = "jdbc:mysql://localhost:3306/20240326zy";//mysql的数据库private String user = "root";//用户名private String password = "sasa";//密码/*** 获取数据库连接* @return 返回连接*/public Connection getConnection(){Connection conn = null;try {Class.forName(driver);conn = DriverManager.getConnection(url,user,password);} catch (Exception e) {e.printStackTrace();}return conn;}/*** 释放资源* @param rs* @param prs* @param conn*/public void closeAll(ResultSet rs,PreparedStatement prs,Connection conn){try {if (rs!=null){rs.close();}if (prs!=null){prs.close();}if (conn!=null){conn.close();}}catch (Exception e){e.printStackTrace();}}/*** 增删改* @param sql sql语句* @param objs 参数* @return*/public int exceuteUpdate(String sql,Object... objs){int num = 0;try {Connection conn = getConnection();PreparedStatement prs = conn.prepareStatement(sql);for (int i = 0; i < objs.length; i++) {prs.setObject(i+1,objs[i]);}num = prs.executeUpdate();closeAll(null,prs,conn);}catch (Exception e){e.printStackTrace();}return num;}
}

查询单个数据

/*** 查询一个字段 (只会返回一条记录且只有一个字段;常用场景:查询总数量)* @param sql* @param params* @return*/public static Object findSingleValue(String sql, List<Object> params) {Object object = null;Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {// 获取数据库连接connection = getConnection();// 预编译preparedStatement = connection.prepareStatement(sql);// 如果有参数,则设置参数,下标从1开始if (params != null && params.size() > 0) {// 循环设置参数,设置参数类型为Objectfor (int i = 0; i < params.size(); i++){preparedStatement.setObject(i+1, params.get(i));}}// 执行查询,返回结果集resultSet = preparedStatement.executeQuery();// 判断并分析结果集if (resultSet.next()) {object = resultSet.getObject(1);}} catch (Exception e) {e.printStackTrace();}return object;}

查询多个数据

首先我们要有个实类,必须和连接的那个数据库中的列一致
在这里插入图片描述
然后创建一个实类的Dao,以下就是查询代码


import zy20240326.entity.brand;//这个就是实类
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class brandDao {BaseDao bd = new BaseDao();//创建对象PreparedStatement prs = null;ResultSet rs = null;public List<brand> getAll(){List<brand> list = new ArrayList<>();//创建一个对象Connection conn =bd.getConnection();//获取连接String sql = "select * from brand";try {prs = conn.prepareStatement(sql);rs = prs.executeQuery();while (rs.next()){brand brand = new brand();brand.setBrandid(rs.getInt("Brandid"));brand.setBrandName(rs.getString("BrandName"));list.add(brand);//获取查询到的值并且增到对象中}bd.closeAll(rs,prs,conn);//关闭连接} catch (Exception e) {e.printStackTrace();}return list;}
}

运行代码

public class daoTest {public static void main(String[] args) {brandDao dao = new brandDao();List<brand> list = dao.getAll();for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i).getBrandid() +"---"+list.get(i).getBrandName());}}
}

运行结果
在这里插入图片描述

总结

以上操作就是一些简单的BaseDao的增删改查

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/577408.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python函数参数中独立星号*的作用

python函数中间有一个&#xff08;&#xff09;分隔&#xff0c;星号后面为*命名关键字参数&#xff0c;星号本身不是参数**。命名关键字参数&#xff0c;在函数调用时必须带参数名字进行调用。如下例子&#xff1a;

【Netty 源码】NioEventLoop 源码分析 篇二

【Netty 源码】NioEventLoop 源码分析 篇二 1.NioEventLoop 继承关系 NioEventLoop继承自SingleThreadEventLoop&#xff0c;一次只能执行一个线程任务&#xff0c;因此在父类SingleThreadEventLoop中维护了 Queue tailTasks 线程队列。 NioEventLoop又间接继承了 AbstractS…

六千字详解!一篇看懂 ArrayList 的扩容机制(完整源码解析)

☀️今天花了很久写了这篇关于 ArrayList 扩容机制源码解析的博客&#xff0c;在阅读源码的过程中发现了很多之前有误解的地方&#xff0c;也加深了对代码的理解&#xff0c;所以写下了这篇博客。 &#x1f3b6;本文附带了流程中所有的代码和附加解析&#xff0c;我有信心一定能…

五款常用在线JavaScript加密混淆工具详解:jscrambler、JShaman、jsfack、ipaguard和jjencode

摘要 本篇技术博客将介绍五款常用且好用的在线JavaScript加密混淆工具&#xff0c;包括 jscrambler、JShaman、jsfack、freejsobfuscator 和 jjencode。通过对这些工具的功能及使用方法进行详细解析&#xff0c;帮助开发人员更好地保护和加密其 JavaScript 代码&#xff0c;提…

STM32之HAL开发——串口配置(CubeMX)

串口引脚初始化&#xff08;CubeMX&#xff09; 选择RCC时钟来源 选择时钟频率&#xff0c;配置为最高频率72MHZ 将单片机调试模式打开 SW模式 选择窗口一配置为异步通信模式 点击IO口设置页面&#xff0c;可以看到当前使用的串口一的引脚。如果想使用复用功能&#xff0c;只需…

原型链-(前端面试 2024 版)

来讲一讲原型链 原型链只存在于函数之中 四个规则 1、引用类型&#xff0c;都具有对象特性&#xff0c;即可自由扩展属性。 2、引用类型&#xff0c;都有一个隐式原型 __proto__ 属性&#xff0c;属性值是一个普通的对象。 3、引用类型&#xff0c;隐式原型 __proto__ 的属…

Vue——案例01(查询用户)

一、案例实现页面 二、案例实现效果 1. 查询效果 2. 年龄升序 3. 年龄降序 4. 原顺序 三、案例实现思路 1. 定义界面所需标签样式 <div id"app"><h2>查询用户:</h2><input type"text" placeholder"请输入名字"/><b…

代码随想录算法训练营第35天| 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 题目链接&#xff1a;无重叠区间 题目描述&#xff1a;给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 解题思想&#xff1a; 这道题目和射气球很像。 *“需…

rust使用Command库调用cmd命令或者shell命令,并支持多个参数和指定文件夹目录

想要在不同的平台上运行flutter doctor命令&#xff0c;就需要知道对应的平台是windows还是linux&#xff0c;如果是windows就需要调用cmd命令&#xff0c;如果是linux平台&#xff0c;就需要调用sh命令&#xff0c;所以可以通过cfg!实现不同平台的判断&#xff0c;然后调用不同…

代码随想录算法训练营第二十四天|77.组合、216.组合Ⅲ

文档链接&#xff1a;https://programmercarl.com/ LeetCode77.组合 题目链接&#xff1a;https://leetcode.cn/problems/combinations/ 思路&#xff1a; 回溯三部曲&#xff1a; 第一步&#xff1a;确定函数返回值和参数类型 第二步&#xff1a;确定终止条件 第三步&a…

JUC/多线程的基本使用(一)

一、基本使用 Thread、Runnable、FutureTask Java多线程-CSDN博客https://blog.csdn.net/m0_71534259/article/details/132381495?spm1001.2014.3001.5501 二、查看进程线程的方法 windows 任务管理器可以查看进程和线程数&#xff0c;也可以用来杀死进程 tasklist 查看…

ICLR2024:南洋理工发布!改几个参数就为大模型注入后门

随着大语言模型&#xff08;LLMs&#xff09;在处理自然语言处理&#xff08;NLP&#xff09;相关任务中的广泛应用&#xff0c;它们在人们日常生活中的作用日益凸显。例如&#xff0c;ChatGPT等模型已被用于各种文本生成、分类和情感分析任务。然而&#xff0c;这些模型潜在的…