当前位置: 首页 > news >正文

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的优点&#xff1a;BaseDao用来做什么操作&#xff1f; 二、BaseDao封装增删改查 案例演示&#xff1a;1、java与数据库进行连接2、连接后可对其进行操作&#xff08;增、删、改&#xff09;返回影响行数3、查询 查询一个字段&#xff08;返回一…...

计算机毕业设计Python+Spark知识图谱高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 大数据毕业设计 机器学习 深度学习 人工智能

学院&#xff08;全称&#xff09;&#xff1a; 专业&#xff08;全称&#xff09;&#xff1a; 姓名 学号 年级 班级 设计&#xff08;论文&#xff09; 题目 基于Spark的高考志愿推荐系统设计与实现 指导教师姓名 职称 拟…...

基于java+springboot+vue实现的电商个性化推荐系统(文末源码+Lw+ppt)23-389

摘 要 伴随着我国社会的发展&#xff0c;人民生活质量日益提高。于是对电商个性化推荐进行规范而严格是十分有必要的&#xff0c;所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套电商个性化推荐系统&#xff0c;帮…...

论文阅读,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 平滑粒子流…...

新能源充电桩站场视频汇聚系统建设方案及技术特点分析

随着新能源汽车的普及&#xff0c;充电桩作为新能源汽车的基础设施&#xff0c;其安全性和可靠性越来越受到人们的关注。为了更好地保障充电桩的安全运行与站场管理&#xff0c;TSINGSEE青犀&触角云推出了一套新能源汽车充电桩视频汇聚管理与视频监控方案。 方案采用高清摄…...

三、音频隐写[Audacity、deepsound、dtmf2num、MMSSTV、虚拟声卡、MP3Stego]

工具 1.Audacity 下载&#xff1a;https://www.audacityteam.org/download/windows/ 使用&#xff1a; 删除&#xff1a;先用左键长按拖着选中内容&#xff0c;然后选择软件最上方菜单栏的编辑&#xff0c;然后选择“删除”&#xff0c;最后点击文件的导出音频就能成功导出…...

二、Web3 学习(区块链)

区块链基础知识 一、基础知识1. 区块链可以做什么&#xff1f;2. 区块链的三个特点 二、区块链的类型概括1. PoW2. PoS3. 私有链和联盟链 三、智能合约1. 什么是智能合约2. 如何使用智能合约 四、困境1. 三难选择的基本要素2. 这真的是一个三难选择吗? 五、比特币1. 什么是比特…...

Linux内网提权

一、SUID提权 前提条件&#xff1a; &#xff08;1&#xff09;SUID仅对二进制有效&#xff08;2&#xff09;执行者对于该程序需要有x的可执行权限&#xff08;3&#xff09;本权限仅在程序的执行过程中有效 1、设置SUID权限&#xff1a;&#xff08;root权限&#xff09; …...

聚观早报 | 抖音独立商城App上线;阿里云联发科合作

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 3月29日消息 抖音独立商城App上线 阿里云联发科合作 苹果WWDC24官宣 恒大汽车2023年营收财报 亚马逊投资Anthro…...

第十四届蓝桥杯省赛C++ B组所有题目以及题解(C++)【编程题均通过100%测试数据】

第一题《日期统计》【枚举】 【问题描述】 小蓝现在有一个长度为100的数组&#xff0c;数组中的每个元素的值都在0到9的范围之内。数组中的元素从左至右如下所示&#xff1a; 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转化(场景案例一)

文章目录 前言技术资料 前言 随着物联网、大数据、智能制造技术的不断发展&#xff0c;越来越多的企业正在进行工厂的智能化转型升级。转型升级第一步往往是设备的智能化改造&#xff0c;助力设备数据快速上云&#xff0c;实现设备数据共享和场景互联。然而&#xff0c;在生产…...

Kubernetes-running app on kube

Docker 安装Docker 首先&#xff0c;您需要在Linux机器上安装Docker。如果您不使用Linux&#xff0c;则需要启动一个Linux虚拟机(VM)并在该虚拟机中运行Docker。如果你使用的是Mac或Windows系统&#xff0c;并按照指令安装Docker, Docker将为你建立一个虚拟机&#xff0c;并在…...

简述如何系统地学习Python

随着人工智能、大数据和云计算等技术的快速发展&#xff0c;编程已经成为了当今社会中不可或缺的一项技能。Python作为一种高级编程语言&#xff0c;因其简洁明了的语法、强大的功能和广泛的应用领域&#xff0c;成为了许多初学者和专业人士的首选。那么&#xff0c;如何系统地…...

bsd猜想 Murmuration of Eliptic Curves(笔记)

BSD Alexey Pozdnyakov (University of Connecticut) YUTUBE视频&#xff0c; B站搬运地址新生代女数学家Nina Zubrilina得到椭圆曲线椋鸟群飞模式精确公式与证明 Arithmetic Geometry算术几何 希尔伯特第十问题 希尔伯特第十问题&#xff08;Hilbert’s Tenth Problem&#…...

小米汽车正式发布:开启智能电动新篇章

随着科技的不断进步&#xff0c;汽车产业正经历着前所未有的变革。智能电动汽车作为这一变革的重要方向&#xff0c;正吸引着越来越多的目光。在这个充满机遇和挑战的时代&#xff0c;小米汽车凭借其卓越的技术实力和深厚的市场底蕴&#xff0c;终于迈出了坚实的一步。今天&…...

线性代数笔记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 ​z1​z2​z3​z4​⋯​ ​ 复向量的模长 ∣ 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&#xff0c;请你统计有多少个子矩阵 (最小 1111, 最大 NM 满足子矩阵中所有数的和不超过给定的整数 K。 输入格式 第一行包含三个整数 N,M 和 K。 之后 N 行每行包含 M 个整数, 代表矩阵 A。 输出格式 一个整数代表答案。 输入输出样例 …...

Rust 实战练习 - 8. 内存,ASM,外挂 【重磅】

目标&#xff1a; C写一个Demo版本的游戏由浅入深&#xff0c;了解外挂原理Linux/Android下实现内存读取ptrace实现内存修改&#xff08;依赖第三方库&#xff09; 先准备一个C写的小游戏 #include <stdio.h> #include <string.h>struct Role {float pos_x; // …...

XUbuntu22.04之Typora快捷键Ctrl+5不生效问题(二百二十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

GRE_MGRE综合实验

目录 1、R5为ISP&#xff0c;只能进行IP地址配置&#xff0c;其所有地址均配为公有IP地址。 IP配置 配置公网全网通 2、&#xff08;1&#xff09;R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方。 PAP认证 &#xff08;2&#xff09;R2与R5之间使用ppp的CHAP认证&am…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...