BaseDao入门使用
目录
- 一、什么是BaseDao?
- BaseDao的优点:
- BaseDao用来做什么操作?
 
- 二、BaseDao封装增删改查 案例演示:
- 1、java与数据库进行连接
- 2、连接后可对其进行操作(增、删、改)返回影响行数
- 3、查询 查询一个字段(返回一条记录且只有一个条件,常用场景:单个条件查询)
- 4、有连接自然就有有关闭 使用完关闭数据库连接
 
- 三、演示BaseDao增删改查方法:
一、什么是BaseDao?
BaseDao是一个基于数据访问对象(Data Access Object,简称 DAO)设计模式的通用数据库操作类,它封装了对数据库的基本操作,如增加、删除、修改和查询等。使用 BaseDAO 可以简化数据库操作的代码编写,提高开发效率。
BaseDao的优点:
- 代码复用性:BaseDao封装了通用的数据库操作方法,这些方法可以被不同的业务逻辑类重复调用,这样可以减少重复编写相同数据库操作代码的工作,提高了代码的复用性。
- 业务逻辑与数据库访问解耦:BaseDao不直接与具体的数据库表对应,而是通过数据映射层(如DTO、VO等)来实现业务逻辑与数据库表的映射。这样的设计使得开发者在编写业务逻辑时,无需关心具体的数据库表结构,只需专注于业务逻辑的实现,从而降低了业务逻辑与数据库访问之间的耦合度。
- 灵活的数据操作方法:BaseDao提供了多种灵活的数据操作方法,如分页查询、条件查询等,这些方法可以满足业务逻辑的各种需求,使得数据处理更加灵活和高效。
- 模块化DAO(Data Access Object)的设计原则是为了实现功能的模块化,这有利于代码的维护和升级。在实际开发中,DAO层主要负责数据的持久化,而不包含任何业务相关的信息,这有助于保持代码的清晰和易于管理。
BaseDao的使用可以简化数据库操作,提高开发效率和代码质量。
BaseDao用来做什么操作?
- 提供通用的数据库操作:BaseDao提供了一些通用的方法,
 如插入数据、更新数据、删除数据和查询数据等,这些方法可以在不同的数据访问对象中重复使用。
- 减少冗余代码
- 提高开发效率
- 降低出错概率
二、BaseDao封装增删改查 案例演示:
1、java与数据库进行连接
//数据库连接
public class BaseDao {private String driver = "com.mysql.jdbc.Driver";// 数据库驱动字符串private String url = "jdbc:mysql://localhost:3306/数据库名";// 连接URL字符串private String user = "root"; // 数据库用户名private String password = "20040417"; // 用户密码Connection conn=null; // 数据连接对象/*** 获取数据库连接对象*/public Connection getConnection() {Connection conn=null; // 数据连接对象// 获取连接并捕获异常try {Class.forName(driver);conn = DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();				// 异常处理}return conn;							// 返回连接对象}
2、连接后可对其进行操作(增、删、改)返回影响行数
 /*** 增、删、改的操作* @param sql 预编译的 SQL 语句* @param param 参数的字符串数组* @return 影响的行数*/public int exceuteUpdate (String sql, Object[] param) {PreparedStatement ps = null;int row = 0;conn =  getConnection();try {ps = conn.prepareStatement(sql);if (param != null) {for (int i = 0; i < param.length; i++) {//为预编译sql设置参数ps.setObject(i + 1, param[i]);}}row = ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();} finally{closeAll(conn,ps,null);}return row;}3、查询 查询一个字段(返回一条记录且只有一个条件,常用场景:单个条件查询)
/*** 查询方法* @param sql* @param objs* @return*/public List<Names> executeQuery(String sql, Object[] objs) {List<Names> resultList = new ArrayList<>();Connection con = getConnection();try {PreparedStatement ps = con.prepareStatement(sql);// 设置参数for (int i = 0; i < objs.length; i++) {ps.setObject(i + 1, objs[i]);}ResultSet rs = ps.executeQuery();while (rs.next()) {Names a = new Names();// 根据实际表结构设置属性值a.setId(rs.getInt("id"));a.setName(rs.getString("name"));a.setPwd(rs.getString("pwd"));resultList.add(a);System.out.println(a.getId()+a.getName()+a.getPwd());}closeAll(con, rs, ps);} catch (Exception e) {e.printStackTrace();}return resultList;}
4、有连接自然就有有关闭 使用完关闭数据库连接
/*** 关闭数据库连接* @param conn 数据库连接* @param stmt Statement对象* @param rs 结果集*/public void closeAll(Connection conn, Statement stmt, ResultSet rs) {// 若结果集对象不为空,则关闭if (rs != null) {try {rs.close();} catch (Exception e) {e.printStackTrace();}}// 若Statement对象不为空,则关闭if (stmt != null) {try {stmt.close();} catch (Exception e) {e.printStackTrace();}}// 若数据库连接对象不为空,则关闭if (conn != null) {try {conn.close();} catch (Exception e) {e.printStackTrace();}}}
三、演示BaseDao增删改查方法:
public class Test {public static void main(String[] args) throws SQLException {BaseDao1 dao=new BaseDao1();//新增功能String sqlAdd="insert into names(name,age) values(?,?)";Object []objAdd={"老九",11};int r1=dao.executeUpdate(sqlAdd,objAdd);if(r1>0){System.out.println("新增成功");}//删除功能String sqlDel="delete from names where id=?";Object []objDel={2};int r2= dao.executeUpdate(sqlDel,objDel);if(r2>0){System.out.println("删除成功");}//修改功能String sqlUpdate="update  names set name=? where id=?";Object []objUpdate={"小尹",1};int r3= dao.executeUpdate(sqlUpdate,objUpdate);if(r3>0){System.out.println("修改成功");}//查询功能String sqlShow = "select * from names where id=?";Object[] objShow = {1};//返回结果集dao.executeQuery(sqlShow,objShow);}}
总结:以上就是BaseDao的使用入门了 如有错误望指点 谢谢!
相关文章:
BaseDao入门使用
目录 一、什么是BaseDao?BaseDao的优点:BaseDao用来做什么操作? 二、BaseDao封装增删改查 案例演示:1、java与数据库进行连接2、连接后可对其进行操作(增、删、改)返回影响行数3、查询 查询一个字段(返回一…...
 
计算机毕业设计Python+Spark知识图谱高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 大数据毕业设计 机器学习 深度学习 人工智能
学院(全称): 专业(全称): 姓名 学号 年级 班级 设计(论文) 题目 基于Spark的高考志愿推荐系统设计与实现 指导教师姓名 职称 拟…...
 
基于java+springboot+vue实现的电商个性化推荐系统(文末源码+Lw+ppt)23-389
摘 要 伴随着我国社会的发展,人民生活质量日益提高。于是对电商个性化推荐进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套电商个性化推荐系统,帮…...
论文阅读,The Lattice Boltzmann Method: Principles and Practice(六)(1)
目录 一、流体模拟方法概述 二、传统的Navier-Stokes求解器 2.1 有限差分 2.2 有限体积法 2.3 有限元法 三、基于粒子的求解器 3.1 动力学理论 3.2 分子动力学 3.3 格子气体模型 3.4 耗散粒子动力学 3.5 多粒子碰撞动力学 3.6 直接模拟蒙特卡罗方法 3.7 平滑粒子流…...
 
新能源充电桩站场视频汇聚系统建设方案及技术特点分析
随着新能源汽车的普及,充电桩作为新能源汽车的基础设施,其安全性和可靠性越来越受到人们的关注。为了更好地保障充电桩的安全运行与站场管理,TSINGSEE青犀&触角云推出了一套新能源汽车充电桩视频汇聚管理与视频监控方案。 方案采用高清摄…...
 
三、音频隐写[Audacity、deepsound、dtmf2num、MMSSTV、虚拟声卡、MP3Stego]
工具 1.Audacity 下载:https://www.audacityteam.org/download/windows/ 使用: 删除:先用左键长按拖着选中内容,然后选择软件最上方菜单栏的编辑,然后选择“删除”,最后点击文件的导出音频就能成功导出…...
 
二、Web3 学习(区块链)
区块链基础知识 一、基础知识1. 区块链可以做什么?2. 区块链的三个特点 二、区块链的类型概括1. PoW2. PoS3. 私有链和联盟链 三、智能合约1. 什么是智能合约2. 如何使用智能合约 四、困境1. 三难选择的基本要素2. 这真的是一个三难选择吗? 五、比特币1. 什么是比特…...
Linux内网提权
一、SUID提权 前提条件: (1)SUID仅对二进制有效(2)执行者对于该程序需要有x的可执行权限(3)本权限仅在程序的执行过程中有效 1、设置SUID权限:(root权限) …...
 
聚观早报 | 抖音独立商城App上线;阿里云联发科合作
聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 3月29日消息 抖音独立商城App上线 阿里云联发科合作 苹果WWDC24官宣 恒大汽车2023年营收财报 亚马逊投资Anthro…...
 
第十四届蓝桥杯省赛C++ B组所有题目以及题解(C++)【编程题均通过100%测试数据】
第一题《日期统计》【枚举】 【问题描述】 小蓝现在有一个长度为100的数组,数组中的每个元素的值都在0到9的范围之内。数组中的元素从左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 …...
 
【御控物联】 IOT异构数据JSON转化(场景案例一)
文章目录 前言技术资料 前言 随着物联网、大数据、智能制造技术的不断发展,越来越多的企业正在进行工厂的智能化转型升级。转型升级第一步往往是设备的智能化改造,助力设备数据快速上云,实现设备数据共享和场景互联。然而,在生产…...
 
Kubernetes-running app on kube
Docker 安装Docker 首先,您需要在Linux机器上安装Docker。如果您不使用Linux,则需要启动一个Linux虚拟机(VM)并在该虚拟机中运行Docker。如果你使用的是Mac或Windows系统,并按照指令安装Docker, Docker将为你建立一个虚拟机,并在…...
简述如何系统地学习Python
随着人工智能、大数据和云计算等技术的快速发展,编程已经成为了当今社会中不可或缺的一项技能。Python作为一种高级编程语言,因其简洁明了的语法、强大的功能和广泛的应用领域,成为了许多初学者和专业人士的首选。那么,如何系统地…...
 
bsd猜想 Murmuration of Eliptic Curves(笔记)
BSD Alexey Pozdnyakov (University of Connecticut) YUTUBE视频, B站搬运地址新生代女数学家Nina Zubrilina得到椭圆曲线椋鸟群飞模式精确公式与证明 Arithmetic Geometry算术几何 希尔伯特第十问题 希尔伯特第十问题(Hilbert’s Tenth Problem&#…...
 
小米汽车正式发布:开启智能电动新篇章
随着科技的不断进步,汽车产业正经历着前所未有的变革。智能电动汽车作为这一变革的重要方向,正吸引着越来越多的目光。在这个充满机遇和挑战的时代,小米汽车凭借其卓越的技术实力和深厚的市场底蕴,终于迈出了坚实的一步。今天&…...
线性代数笔记25--复数矩阵、快速傅里叶变换
1. 复数矩阵 复向量 Z [ z 1 z 2 z 3 z 4 ⋯ ] Z\begin{bmatrix} z_1\\z_2\\z_3\\z_4\\ \cdots \end{bmatrix} Z z1z2z3z4⋯  复向量的模长 ∣ z ∣ z ‾ ⊤ z [ z ‾ 1 z ‾ 2 z ‾ 3 ] [ z 1 z 2 z 3 ] \lvert z\rvert\overline z^{\top}z \begin{bmatrix…...
洛谷 P8783 [蓝桥杯 2022 省 B] 统计子矩阵
题目描述 给定一个 NM 的矩阵 A,请你统计有多少个子矩阵 (最小 1111, 最大 NM 满足子矩阵中所有数的和不超过给定的整数 K。 输入格式 第一行包含三个整数 N,M 和 K。 之后 N 行每行包含 M 个整数, 代表矩阵 A。 输出格式 一个整数代表答案。 输入输出样例 …...
Rust 实战练习 - 8. 内存,ASM,外挂 【重磅】
目标: C写一个Demo版本的游戏由浅入深,了解外挂原理Linux/Android下实现内存读取ptrace实现内存修改(依赖第三方库) 先准备一个C写的小游戏 #include <stdio.h> #include <string.h>struct Role {float pos_x; // …...
 
XUbuntu22.04之Typora快捷键Ctrl+5不生效问题(二百二十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
 
GRE_MGRE综合实验
目录 1、R5为ISP,只能进行IP地址配置,其所有地址均配为公有IP地址。 IP配置 配置公网全网通 2、(1)R1和R5间使用PPP的PAP认证,R5为主认证方。 PAP认证 (2)R2与R5之间使用ppp的CHAP认证&am…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
 
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
 
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
 
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
