一、ORM简介对象关系映射英语Object Relational Mapping简称ORM或 O/R mapping是一种为了解决面向对象语言与关系数据库存在的 互不匹配的现象。二、实体类实体类就是一个定义了属性拥有getter、setter、无参构造方法 基本必备的一个类。实体类可以在数据传输过程中对数据进行封装相当于一个“工具”、“容器”、“载体”能存储、传输数据能管理数据。特点实体类名尽量和数据库中的表名一一对应实体类中的属性对应数据库表中的字段相关的命名最好也一一对应实体类内方法主要有getter、setter方法用于设置、获取数据实体类属性一般为private类型方法为public类型实体类应该有无参、有参构造方法三、应用程序分层3.1 应用程序分层简介应用程序分层是指通过创建不同的包来实现项目的分层将项目中的代码根据功能做具体划分并存放在不同的包下。3.2 三层结构三层结构就是将整个业务应用划分为表述层、业务逻辑层、数据访问层。区分层次的目的即为了“高内聚 低耦合”的思想。在软件体系架构设计中分层式结构是最常见也是最重要的一种结构。分层优点3.3 分层命名3.4 应用程序分层实现3.4.1在分层项目中实现查询业务①daoUserDao接口UserDaoImpl接口实现类②serviceUserService接口UserServiceImpl接口实现类③web3.4.2封装通用的BaseDao封装通用的DML操作BaseDao接口BaseDaoImpl接口实现类UsersDao接口UsersDaoImpl接口实现类封装通用的查询操作BaseDao接口BaseDaoImpl接口实现类UsersDao接口UsersDaoImpl接口实现类四、对象的关联关系4.1 关联关系简介关联关系(Association)是一种拥有的关系它使一个对象知道另一个对象的属性和方法。关联可以是双向的也可以是单向的。在 Java语言中关联关系一般使用成员变量来实现。4.2 对象的关联关系解决了什么问题在多表查询时使用对象关联关系能够更合理的存放查询到的结果集数据。4.3 关联关系的方向性4.4 实例对象的关联关系Users对象Orders对象五、封装JDBCUtils类import java.io.InputStream; import java.sql.*; import java.util.Properties; public class JDBCUtils { private static String url null; private static String name null; private static String pwd null; static { try{ Properties prop new Properties(); InputStream in JDBCUtils.class.getClassLoader().getResourceAsStream(jdbc.properties); prop.load(in); url prop.getProperty(url); name prop.getProperty(name); pwd prop.getProperty(pwd); }catch(Exception e){ e.printStackTrace(); } } //获取数据库连接对象 public static Connection getConnection() { Connection connection null; try { connection DriverManager.getConnection(url,name,pwd); } catch (SQLException throwables) { throwables.printStackTrace(); } return connection; } //关闭连接对象 public static void closeConnection(Connection connection){ try { connection.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } //提交事务 public static void commit(Connection connection){ try { connection.commit(); } catch (SQLException throwables) { throwables.printStackTrace(); } } //事务回滚 public static void rollback(Connection connection){ try { connection.rollback(); } catch (SQLException throwables) { throwables.printStackTrace(); } } //关闭Statement对象 public static void closeStatement(Statement statement){ try { statement.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } //关闭ResultSet public static void closeResultSet(ResultSet resultSet) { try { resultSet.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } //DML操作时关闭资源 public static void closeResource(Statement statement,Connection connection){ //先关闭Statement对象 closeStatement(statement); //在关闭Connection对象 closeConnection(connection); } //查询时关闭资源 public static void closeResource(ResultSet resultSet,Statement statement,Connection connection){ //先关闭ResultSet closeResultSet(resultSet); //在闭Statement对象 closeStatement(statement); //最后关闭Connection对象 closeConnection(connection); } }urljdbc:mysql://localhost:3306/db1 nameroot pwd123456六、通过druid重构JDBCUtilsimport com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JDBCUtilsDruid { private static DataSource ds null; static{ try { InputStream is JDBCUtilsDruid.class.getClassLoader().getResourceAsStream(druid.properties); Properties prop new Properties(); prop.load(is); ds DruidDataSourceFactory.createDataSource(prop); } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnection() throws Exception { Connection conn null; conn ds.getConnection(); return conn; } public static void close(Connection conn, Statement statement) throws Exception { try { if (statement ! null) { statement.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { if (conn ! null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
企业数字化 ERP 产品动态
相关推荐
Ideon路线图与社区:如何参与这个开源无限画布项目的开发 【免费下载链接】ideon Your project is scattered across too many tools. Map the chaos on an infinite canvas where notes, files, TO-DOs (and more!) finally live together. 项目地址: https://gitcode.com/gh_mirrors/id/ideon 点击查看 免费下载 Ideon 是… · 2026/11/5 5:07:59
基于ADS122U04与STM32L452RE的PT100高精度测温方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 5:06:59
三维重建与无感定位技术在危化品园区智能安防中的应用 1. 项目背景与核心价值危化品园区安全管理一直是工业领域的重点难点问题。传统监控手段存在视野盲区、定位精度低、响应滞后等痛点,尤其在复杂立体空间中难以实现全方位无死角覆盖。我们团队研发的这套智能安防管理系统,通过融合三维重建与无感定位两大核… · 2026/11/5 5:49:12
哈希算法原理、应用与工程实践指南 1. 哈希的本质与核心价值哈希(Hash)本质上是一种将任意长度的输入数据映射为固定长度输出的单向函数。就像图书馆的索书号系统——无论书籍多厚多薄,都能被转换成统一格式的编号。这种转换具有三个关键特性:确定性:相同… · 2026/11/5 5:49:12
STM32驱动KSZ8863交换芯片:三端口配置与调试实战 简介:面向STM32嵌入式开发者的KSZ8863交换芯片驱动移植与调试资料,重点解决在缺少硬件I2C外设或引脚受限时,如何通过GPIO模拟I2C总线完成芯片寄存器配置的问题,适合具备一定STM32外设与网络芯片基础的中级开发者参考。压缩包共12个… · 2026/11/5 5:49:12
危化品园区智能安防系统:三维重建与无感定位技术实践 1. 项目背景与核心价值危化品园区作为特殊的高风险作业场所,其安全管理一直是行业痛点。传统监控系统存在三大局限:二维画面缺乏空间感知、人工巡检存在盲区、应急响应依赖经验判断。我们团队研发的这套智能安防系统,通过三维重建构建数字孪生… · 2026/11/5 5:49:12
解决IntelliJ IDEA中MyBatis XML文件SQL背景色问题 1. 问题背景与现象解析作为一名常年使用IntelliJ IDEA进行Java开发的程序员,我最近在编写MyBatis的XML映射文件时遇到了一个视觉干扰问题——文件中的SQL语句部分突然出现了浅色背景高亮(如下图所示)。这种背景色虽然不影响代码功能ÿ… · 2026/11/5 5:49:12
STM32 SD卡FATFS文件系统移植与读写实战 简介:围绕STM32平台读取SD卡并挂载FATFS文件系统,这套实战工程包面向嵌入式初学者、课程设计学生及需要快速验证存储方案的开发者,重点解决SPI/SDIO接口下SD卡初始化、扇区读写与文件系统移植问题。资料将HAL库、FATFS配置、KEIL工程组织与文… · 2026/11/5 5:48:12
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38