BaseDao的增删改查【入门级】

文章目录

  • 一.BaseDao是什么
      • BaseDao的特性
  • 二.BaseDao的操作
        • 1.第一步创建名叫BaseDao的类
        • 2.开始实现数据库与Java的连接
        • 3. 查询的操作
        • 4. 增删改的操作
        • 5.关闭数据库

一.BaseDao是什么

BaseDao是为了解决数据库中增删改查而的提供的一个定义类,是一个接口代码,公共方法的接口类。

BaseDao的特性

(1).支持复杂查询
对于数据库中所对应的复杂的查询,可以在编译时自动生成Query类,而Query类可以帮助更加方便地构建查询条件。

(2).逻辑删除功能
支持逻辑删除,在逻辑删除模式下,删除操作自动切换为更新删除标记操作,新增操作自动初始化为未删除状态,更新和查询操作自动忽略已删除数据。

(3). 支持分库分表
内置分库分表功能,支持指定键分键和自定义分库分表算法。

(4).代码生成
提供工具通过数据库表结构自动生成Entity类,提高开发效率。

二.BaseDao的操作

1.第一步创建名叫BaseDao的类
2.开始实现数据库与Java的连接
public class BaseDao {private String driver="com.mysql.jdbc.Driver"; //数据库驱动字符串private String url="jdbc:mysql://localhost:3306/a?serverTimezone=GMT"; //连接URL字符串private String user="root";  //数据库用户名private String password="ww121212"; //用户密码/*** 获取数据库连接对象*/public Connection getConnection(){Connection con=null;// 获取连接并捕获异常try{Class.forName(driver);con=DriverManager.getConnection(url,user,password);}catch (Exception e){e.printStackTrace(); 	// 异常处理}return  con;				// 返回连接对象}
3. 查询的操作
/*** 查询一个字段 (只会返回一条记录且只有一个字段;常用场景:查询总数量)*  1. 得到数据库连接*  2. 定义sql语句*  3. 预编译*  4. 如果有参数,则设置参数,下标从1开始 (数组或集合、循环设置参数)*  5. 执行查询,返回结果集*  6. 判断并分析结果集*  7. 关闭资源**  注:需要两个参数:sql语句、所需参数的集合** @param sql* @param params* @return*/public static Object findSingleValue(String sql, List<Object> params) {Object object = null;Connection conn= null;PreparedStatement pstmt = null;ResultSet rs= null;try {// 获取数据库连接conn= getConnetion();// 预编译pstmt = conn.prepareStatement(sql);// 如果有参数,则设置参数,下标从1开始if (params != null && params.size() > 0) {// 循环设置参数,设置参数类型为Objectfor (int i = 0; i < params.size(); i++){pstmt .setObject(i+1, params.get(i));}}// 执行查询,返回结果集rs= pstmt .executeQuery();// 判断并分析结果集if (rs.next()) {object = rs.getObject(1);}} catch (Exception e) {e.printStackTrace();} finally {// 关闭资源this.close(rs, pstmt , conn);}return object;}
4. 增删改的操作
 /*** 增、删、改的操作* @param sql 预编译的 SQL 语句          * @param param 参数的字符串数组          * @return 影响的行数*/public int exceuteUpdate (String preparedSql, Object[] param) {PreparedStatement pstmt = null;int num = 0;conn =  getConnection(); try {pstmt = conn.prepareStatement(preparedSql);if (param != null) {for (int i = 0; i < param.length; i++) {//为预编译sql设置参数pstmt.setObject(i + 1, param[i]); }}num = pstmt.executeUpdate(); } catch (SQLException e) {e.printStackTrace();} finally{closeAll(conn,pstmt,null);}return num;}
}
5.关闭数据库
/*** 关闭数据库连接* @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的基本操作了。

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

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

相关文章

如何在Linux Ubuntu系统安装Nginx服务并实现无公网IP远程连接

文章目录 1. 安装Docker2. 使用Docker拉取Nginx镜像3. 创建并启动Nginx容器4. 本地连接测试5. 公网远程访问本地Nginx5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 在开发人员的工作中&#xff0c;公网远程访问内网是其必备的技术需求之一。对于…

【Java程序设计】【C00387】基于(JavaWeb)Springboot的校园食堂订餐系统(有论文)

基于&#xff08;JavaWeb&#xff09;Springboot的校园食堂订餐系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过…

【LeetCode: 2580. 统计将重叠区间合并成组的方案数 + 合并区间】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

FPGA 图像处理模块输出端恢复场同步信号Verilog代码

根据输出端有效数据信号计数恢复 reg out_x_cnt;reg out_y_cnt;always (posedge clk or negedge reset) beginif (!reset) beginout_x_cnt < 0;out_y_cnt < 0;end else beginout_x_cnt < valid_o ? ((out_x_cnt img_width - 1) ? 0 : out_x_cnt 1) : out_data_cnt…

基于Springboot的疫情隔离酒店管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的疫情隔离酒店管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

4个AI智能写作平台,为你解决文章写作问题

在信息时代&#xff0c;写作是一项重要的技能&#xff0c;无论是在学术领域还是商务环境中。然而&#xff0c;对于许多人来说&#xff0c;写作并不是一件轻松的事情。但是&#xff0c;随着人工智能的发展&#xff0c;有许多AI智能写作平台可以帮助我们解决文章写作问题。在本文…

外包干了5年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

【MySQL】11. 复合查询(重点)

4. 子查询 子查询是指嵌入在其他sql语句中的select语句&#xff0c;也叫嵌套查询 4.1 单行子查询 返回一行记录的子查询 显示SMITH同一部门的员工 mysql> select * from emp where deptno (select deptno from emp where ename SMITH); -----------------------------…

Google AI 肺癌筛查的计算机辅助诊断

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

计算机网络21-40

计算机网络21-40 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用21、HTTPS是如何保证数据传输的安全&#xff0c;整体的流程是什么&#xff1f;&#xff08;SSL是怎么工作保证安全&#xff09;对称加密非对称加密消息认证码 (MAC)数字证书 22、如何保证公钥不被…

ABC346 A-G 题解

ABC346 A-G题解 A题目AC Code&#xff1a;时间复杂度 B题目时间复杂度AC Code&#xff1a; C题目时间复杂度AC Code&#xff1a; D题目时间复杂度AC Code&#xff1a; E题目时间复杂度AC Code&#xff1a; F题目时间复杂度AC Code&#xff1a; G题目时间复杂度AC Code&#xff…

Learn OpenGL 32 PBR光照

光照 在本章节中&#xff0c;我们把重点放在将之前讨论的理论转化为实际的渲染器&#xff0c;这个渲染器将使用直接的&#xff08;或解析的&#xff09;光源&#xff1a;比如点光源&#xff0c;定向灯或聚光灯。 我们先来看看上一个章提到的反射方程的最终版&#xff1a; 我们…

同一个类构造函数之间相互调用导致的异常

同一个类构造函数之间相互调用导致的异常 错误示例代码 class MyClass { public:MyClass() { p_ std::make_shared<int>();}MyClass(int b) b_(b) { MyClass();} private:int b_;std::shared_ptr<int> p_; };上面代码在使用MyClass(int b)构造函数实例化对象后&…

Vue.js 目录结构

目录解析 目录/文件说明build项目构建(webpack)相关代码config配置目录&#xff0c;包括端口号等。我们初学可以使用默认的。node_modulesnpm 加载的项目依赖模块src 这里是我们要开发的目录&#xff0c;基本上要做的事情都在这个目录里。里面包含了几个目录及文件&#xff1a…

yarn的安装和使用

要安装和使用Yarn&#xff0c;请按照以下步骤进行操作&#xff1a; 首先&#xff0c;确保您的计算机上已经安装了Node.js。您可以通过在命令行中输入以下命令来检查Node.js的安装情况&#xff1a; node --version如果返回了Node.js的版本号&#xff0c;则表示已经成功安装。 …

[项目管理-38]:任务分解技术和方法?

目录 一、任务分解的方法 二、任务分解的步骤 三、如何自定向下分解项目任务 四、如何自顶向下分解软件需求&#xff1f; 五、如何自顶向下分解软件设计&#xff1f; 一、任务分解的方法 任务分解技术和方法是一种将复杂的任务或项目分解为更小、更具体的子任务的过程&am…

红楼梦人物关系知识图谱构建及推理研究

红楼梦人物关系知识图谱构建及推理研究 前言数据爬取与处理知识图谱构建可视化分析与推理研究总结 前言 《红楼梦》是中国古典文学巅峰之作&#xff0c;其中丰富的人物关系构成了一幅错综复杂的社会画卷。本文将介绍如何利用Python编写爬虫代码&#xff0c;使用Requests库进行…

算法刷题day36

目录 引言一、道路与航线二、最优贸易三、选择最佳路线 引言 今天先是把之前还不熟的模板都写了一遍&#xff0c;写了才能体会到&#xff0c;其实模板写了背了其实还是不顶用&#xff0c;还是要有大量的刷题积累&#xff0c;才能把模板发挥出来&#xff0c;不然真的你都看不出…

字符串常量池

特点 1 只要是双引号引起来的字符串都存储在常量池中 2 每次存储字符串的时候&#xff0c;先检查常量池是否有该字符串&#xff0c;如果没有则存储&#xff0c;有则直接使用常量池中的字符串。 示例一&#xff1a; 字符串String由两部分组成&#xff0c;value(存储常量池中的…

Unity-C#进阶——3.27更新中

文章目录 数据结构类ArrayListStackQueueHashtable 泛型泛型类、泛型方法、泛型接口ListDictionaryLinkedList泛型栈&#xff0c;泛型队列 委托和事件委托事件匿名函数Lambad 表达式**闭包** List 排序逆变协变多线程进程线程多线程方法&#xff1a;线程之间共享数据&#xff1…