- STM实战开发(6):STM32 驱动 LCD 屏幕显示字符开发详解
嵌入式开发项目
STM32实战开发2025年嵌入式开发stm32嵌入式硬件单片机物联网
在嵌入式系统中,LCD显示是一个非常常见的需求。STM32作为一个强大的微控制器平台,提供了丰富的外设接口,可以方便地驱动各种类型的LCD屏幕。本文将详细介绍如何使用STM32开发环境,驱动LCD屏幕来显示字符,涵盖从硬件连接到软件控制的所有关键步骤。一、引言液晶显示屏(LCD)广泛应用于各种嵌入式系统中,尤其是在智能设备、家电、汽车电子等领域。STM32作为主流的微控制器之一,拥有强大的计算能力
- STM32F407 定时器实例解析
盼海
stm32stm32单片机嵌入式硬件
文章目录引言STM32F407定时器概述定时器配置实例1.时钟源和分频设置2.计数器和自动重载寄存器配置3.工作模式和输出比较配置4.启动定时器和中断配置寄存器方式HAL库方式STM32F407定时器实例解析引言STM32F407是一款功能强大的微控制器,广泛应用于工业控制、嵌入式系统和智能家居等领域。定时器作为其核心外设之一,不仅承担着精确计时与延迟控制的任务,还能通过生成PWM波形等功能,广泛
- 记录:STM32F407 定时器时钟
tenacity0o
stm32单片机嵌入式硬件
(1)高级定时器timer1,timer8以及通用定时器timer9,timer10,timer11的时钟来源是APB2总线(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线(3)当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时钟,TIM2~TIM7、TIM12
- STM32F407定时器基础知识
石雕冰
stm32嵌入式硬件单片机
基本定时器(TIM6TIM7)通用计时器(TIM2~TIM5TIM9~TIM14)高级控制定时器(TIM1TIM8)定时器之间彼此独立,不共享任何资源。一、基本定时器1.组成(1)时钟源时钟源频率=APB1总线时钟频率×倍频器系数APB1预分频器系数=1->倍频器系数=1APB1预分频器系数≥2->倍频器系数=2APB1总线频率42MHz(2)控制器控制定时器复位、使能、计数、触发DAC转换。DA
- STM32F103的APB1和APB2时钟总线外设
dlhto
stm32stm32
APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。APB2负责ADC,串口1,SPI1,高级TIMI/O,EXTI和AFIO。APB1负责DAC,USB,I2C,CAN,串口2345,SPI23,普通TIM
- stm32 hal 库 使用模板(1)——界面切换
lh_0012
单片机学习stm32
#include"Pages.h"uint8_tPagesNum=PAGE0;voidPage0Display(uint8_tKey){PagesNum=PAGE0;if(Key==KEY1){PagesNum=PAGE1;}}voidPage1Display(uint8_tKey){PagesNum=PAGE1;if(Key==KEY1){PagesNum=PAGE2;}voidPage2Dis
- 串口通信-STM32的USART串口通讯程序
love_yiyi_li
stm32单片机arm
目录一、原理介绍1.串口协议2.常用协议标准1)RS-2322)RS-4853.RS232、485电平与TTL电平的区别1)RS232电平2)RS485电平3)TTL电平4)RS232、485电平与TTL电平的区别3.USB转串口1)基本原理2)芯片简介3)工作原理二、串口通信操作1.驱动下载2.程序编写1)源程序2)编译运行3)烧录结果三、总结一、原理介绍1.串口协议串口是显控设备与信号处理板之
- STM32固件库解析与示例代码
QoyOle
stm32单片机嵌入式硬件
STM32固件库是针对STMicroelectronics的STM32微控制器系列而设计的一套软件库。它提供了一组丰富的功能和驱动程序,帮助开发人员轻松地编写嵌入式应用程序。本文将详细解析STM32固件库的使用,并提供一些示例代码来演示其功能。简介STM32固件库是一种用于STM32微控制器的软件开发库,它提供了一系列的API和驱动程序,用于访问STM32芯片的功能和外设。该库支持多个STM32系
- STM32常见外设的驱动示例和代码解析
HH予
嵌入式驱动工程项目开发stm32
以下是针对STM32常见外设的驱动示例和代码解析,基于HAL库实现,适用于大多数STM32系列(如F1/F4/H7等),可根据具体型号调整引脚和时钟配置。1.GPIO驱动应用场景:控制LED、按键检测、继电器开关等。示例代码://初始化LED(推挽输出)voidLED_Init(void){GPIO_InitTypeDefGPIO_Struct={
- 程序代码篇---STM32串口通信
Ronin-Lotus
嵌入式硬件篇程序代码篇stm32单片机嵌入式硬件
文章目录前言1.头文件和全局变量2.串口1初始化函数3.串口1发送字节函数4.串口1发送字符串函数5.串口1发送数字函数6.重定义fputc函数7.串口数据解析函数8.串口2中断服务程序总结前言本次将介绍一个基于STM32微控制器的串口通信实现,包含了串口的初始化、数据发送、数据接收和解析等功能。下面我将逐句详细解释这段代码。1.头文件和全局变量#include"y_usart/y_usart.h
- 链表的应用
不知真不只
链表java前端
双向链表的引用双向有头链表的创建Dou_node*create_doulink(){Dou_node*pnode=malloc(sizeof(Dou_node));if(NULL==pnode){printf("failmalloc");returnNULL;}pnode->ppre=NULL;pnode->pnext=NULL;returnpnode;}链表是否为空的判断intis_empty_
- STM32F407 内部参考电压校准实现 HAL库
电工小王(全国可飞)
使用HAL库开发stm32stm32单片机嵌入式硬件
校准的是什么?首先,这个校准机制校准的是系统中电源电压VDD,不校准的情况下我们默认它是3.3V怎么校准?STM32F407提供了一个内部固定参考电压VREFINT,这是一个精确的1.21V固定电压源。在芯片制造时,厂家将VREFINT在3.3V的电源电压下的ADC采样值记录在了flash地址0x1FFF7A2A中什么意思呢?厂家出厂的时候给了一个很精确的3.3V电源作为VDD,并记录了在该精准3
- STM32 HAL库 CAN_1
泠君
stm32arm嵌入式硬件
"can.c"#include"stdio.h"CAN_TxHeaderTypeDefmycan_tx;CAN_RxHeaderTypeDefmycan_rx;voidCANFilter_Config(void)//滤波{CAN_FilterTypeDefsFilterConfig;sFilterConfig.FilterBank=0;//CAN过滤器编号,范围0-27sFilterConfig.
- c语言用户登录注册代码,c语言-登录代码示例
Chace Xie
c语言用户登录注册代码
最近上课写的代码呵呵于大家共享哈!!~~~希望等待大家的指导!!!#include#includevoidmain(){charname_static[10]="shenwei",name_input[10],sno_static[10]="123456",sno_input[10];printf("***********************************/n");printf("-
- (C语言)自己的srtlen(输出字符串长度)函数(指针数组解法)
双叶836
C语言(指针)c语言c++算法开发语言数据结构
#include//动态分配函数头文件#includeintstrlen_my(char*str,int*i){//定义新数组char*new_str=NULL;//重新分配str数组空间大小new_str=(char*)realloc(str,(*i)*sizeof(char));if(new_str==NULL){printf("分配失败\n");return1;}intlen=0;//判断数
- C语言实现两种求最大公约数的方法
王希希呀
c语言
第一种:辗转相除法,#includevoidgys(intx,inty){if(xvoidgys(intx,inty){if(x=1;--i){if(x%i==0&&y%i==0){printf("最大公约数是:%d",i);break;}}}intmain(){inta,b;printf("输入两个数:");scanf("%d%d",&a,&b);gys(a,b);return0;}
- 03_基础-03
芦苇King
06_C语言_01c语言
1.比较运算符#includeintmain(){//比较运算符inta=7,b=8;printf("a>b:%d\n",a>b);printf("a=b:%d\n",a>=b);printf("aintmain(){//逻辑运算符//1.与&&doublescore=35;//如果成绩在60~80之间,就输出“合格”if(score>=60&&score=60&&++a80){printf("成
- 从零开始 | C语言基础刷题DAY1
折枝寄北
解题——从简单深入内心c语言算法开发语言
❤个人主页:折枝寄北的博客DAY1[2025.3.11]1.求两个数的较大值2.从键盘输入的两个数的大小关系3.一个整数的奇偶性,请判断4.考试分数是否通过5.考试成绩是否完美,请判断1.求两个数的较大值题目:写一个函数求两个整数的较大值如:输入:1020输出较大值:20代码:#includeintmain(){inta;intb;printf("请输入第一个数字A>");scanf("%d",&
- mdk5.38a版本使用v6编译器6.19、6.20,下载,安装编译器,pack固件包,外设标准库。
我的老子姓彭
单片机stm32嵌入式硬件
文章背景:2023年6月因为使用编译器V5太慢,并且我需要的编译调试次数又多,所以需要采用了v6进行编译,v6编译器可以更快;此次花了很大的精力研究,研究了差不多2周,使用的是stm32f4;环境准备:外设标准库下载地址:STSW-STM32065-STM32F4DSPandstandardperipheralslibrary-STMicroelectronicsps:这个下载经常加载不出来,这是
- 【STM32U5系列产品介绍】
weixin_40454030
stm32嵌入式硬件单片机
STM32U5系列产品介绍前言及初心STM32U5--打造超低功耗产品新标杆STM32U5--新特性介绍STM32U5--片上资源说明STM32U5--低功耗的表现STM32U5--开发板介绍结束语前言及初心首先,感谢CSDN平台,给了我们展现自己的机会,也感谢大家对小编的鼓励和关注,后期,我跟大家一起分享MCU行业的现状及新产品介绍;小编做为ST的合法代理商,10余年的市场经验,从最开始的电话,
- 单片机-STM32U5系列各模式下的功耗
手树
单片机stm32嵌入式硬件
多种功耗模式+更多省电小技巧先进且灵活的低功耗设计110nAShutdown300nAStandby475nAStandby+RTC1.7μAStop3(with16kBSRAM)3.1μAStop3(fullretantionSRAM)3.4μAStop2(with16kBSRAM)6.6μASlop2(fullretention:786-KbyteRA)Downto19.5uA/MHz(Run
- stm32u5x当配置两个QSPI时,QSPI外设无法正常工作
qq_32809397
Stm32CubeTouchGFXstm32嵌入式硬件单片机
stm32u5x当配置两个QSPI时,QSPI外设无法正常工作。我们需要手动在一个外设中添加如下标红代码stm32cubeide配置生成如下:sOspiManagerCfg.ClkPort=1; sOspiManagerCfg.NCSPort=1; sOspiManagerCfg.IOLowPort=HAL_OSPIM_IOPORT_1_LOW; if(HAL_OSPIM_Config(&hosp
- 软件IIC和硬件IIC的主要区别,用标准库举例!
Python小老六
单片机stm32嵌入式硬件
学习交流792125321,欢迎一起加入讨论!在学习iic的时候,我们经常会遇到软件I²C和硬件I²C,它两到底有什么区别呢?软件I²C(模拟I²C)和硬件I²C(外设I²C)是两种实现I²C总线通信的方式,核心区别在于是否依赖微控制器(MCU)内置的硬件I²C外设。以下是详细对比及标准库(以STM32标准外设库为例)的实现差异:1.核心区别特性软件I²C硬件I²C实现方式通过GPIO引脚模拟I²
- 第十七:go 反射
小画家~
golanggolang开发语言后端
fmt.printf("%T",obj)//打印reflect的类型fmt.Printf("%T",obj)//*reflect.rtype//打印的是一个指针类型reflect包在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由reflect.Type和reflect.Value两部分组成,并且reflect包提供了reflect.TypeOf和reflec
- stm32 can 简单分析
风中微笑的代码狗
stm32
1.发送过程寄存器总结TXRQ=1发送can报文,由软件对其置’1’,来请求发送邮箱的数据。当数据发送完成,邮箱为空时,硬件对其清’0’。CAN_MCR寄存器的TXFP位置’1’,can发送为fifo模式,先发送的先发出RQCPTXOK=1发送成功仲裁失败ALST置一发生错误TERR置一TME=1发送邮箱为空ABRQ=1中止如果CAN_IER寄存器TMEIE=1,当RQCPx位被置’1’时,产生中
- STM32中CAN通信详解与示例代码
ArqLoop
stm32单片机嵌入式硬件信息与通信
CAN通信是一种常用的总线通信协议,广泛应用于工业控制、汽车电子等领域。在本文中,我们将详细介绍如何在STM32微控制器上实现CAN通信,并提供相应的示例代码。硬件准备在开始之前,我们需要准备以下硬件:STM32微控制器开发板(例如STM32F4Discovery)CAN收发器(例如MCP2551)CAN总线连接线引脚配置首先,我们需要配置STM32的引脚来支持CAN功能。根据具体的型号和开发板,
- STM32 CAN模块原理与应用详解
mftang
STM32外设stm32嵌入式硬件单片机
目录概述一、CAN模块核心原理1.CAN协议基础2.STM32CAN控制器结构3.波特率配置二、CAN模块配置步骤(基于HAL库)1.初始化CAN外设2.配置过滤器3.启动CAN通信三、数据收发实现1.发送数据帧2.接收数据帧(中断方式)四、高级应用场景1.CANopen协议集成2.双CAN冗余设计3.总线诊断与错误处理五、调试与优化技巧1.硬件调试要点2.软件调试工具3.性能优化策略总结概述CA
- 数据库语句
lrydnh
数据库android
环境变量path下的目录是系统目录。#include#include#pragmacomment(lib,"libmysql.lib")//链接libmysql.dll动态库的中间桥//MYSQL*conn;//数据库句柄。后面还有网络句柄(用来网络收发数据)boolconnect(){conn=mysql_init(NULL);if(conn==NULL){printf("Error%u:%s\
- 指针高级06【数组指针】-黑马程序员C语言
c
数组指针的基本用法概念:指向数组的指针,叫做数组指针作用:方便操作数组中的各种数据#include"stdio.h"intmain(){intarr[]={10,20,30,40,50};intlen=sizeof(arr)/sizeof(int);//获取数组的指针//实际上获取数据的首地址int*p1=arr;int*p2=&arr[0];printf("%p\n",p1);printf("%
- 零基础快速上手STM32开发(手把手保姆级教程)-转载学习
曹瑞曹瑞
stm32学习嵌入式硬件
安装详细教程:零基础快速上手STM32开发(手把手保姆级教程)-CSDN博客部件详细教程:【STM32】江科大STM32学习笔记汇总(已完结)_stm32江科大笔记-CSDN博客
- PHP,安卓,UI,java,linux视频教程合集
cocos2d-x小菜
javaUIPHPandroidlinux
╔-----------------------------------╗┆
- 各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
bozch
.net.net mvc
在.net mvc5中,在执行某一操作的时候,出现了如下错误:
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
经查询当前的操作与错误内容无关,经过对错误信息的排查发现,事故出现在数据库迁移上。
回想过去: 在迁移之前已经对数据库进行了添加字段操作,再次进行迁移插入XXX字段的时候,就会提示如上错误。
&
- Java 对象大小的计算
e200702084
java
Java对象的大小
如何计算一个对象的大小呢?
 
- Mybatis Spring
171815164
mybatis
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService userService = (CustomerService) ac.getBean("customerService");
Customer cust
- JVM 不稳定参数
g21121
jvm
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”
- 用户自动登录网站
永夜-极光
用户
1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接
- centos7 安装后失去win7的引导记录
程序员是怎么炼成的
操作系统
1.使用root身份(必须)打开 /boot/grub2/grub.cfg 2.找到 ### BEGIN /etc/grub.d/30_os-prober ### 在后面添加 menuentry "Windows 7 (loader) (on /dev/sda1)" { 
- Oracle 10g 官方中文安装帮助文档以及Oracle官方中文教程文档下载
aijuans
oracle
Oracle 10g 官方中文安装帮助文档下载:http://download.csdn.net/tag/Oracle%E4%B8%AD%E6%96%87API%EF%BC%8COracle%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%8Coracle%E5%AD%A6%E4%B9%A0%E6%96%87%E6%A1%A3 Oracle 10g 官方中文教程
- JavaEE开源快速开发平台G4Studio_V3.2发布了
無為子
AOPoraclemysqljavaeeG4Studio
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V3.2版本已经正式发布。大家可以通过如下地址下载。
访问G4Studio网站
http://www.g4it.org
G4Studio_V3.2版本变更日志
功能新增
(1).新增了系统右下角滑出提示窗口功能。
(2).新增了文件资源的Zip压缩和解压缩
- Oracle常用的单行函数应用技巧总结
百合不是茶
日期函数转换函数(核心)数字函数通用函数(核心)字符函数
单行函数; 字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)
一:字符函数:
.UPPER(字符串) 将字符串转为大写
.LOWER (字符串) 将字符串转为小写
.INITCAP(字符串) 将首字母大写
.LENGTH (字符串) 字符串的长度
.REPLACE(字符串,'A','_') 将字符串字符A转换成_
- Mockito异常测试实例
bijian1013
java单元测试mockito
Mockito异常测试实例:
package com.bijian.study;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.
- GA与量子恒道统计
Bill_chen
JavaScript浏览器百度Google防火墙
前一阵子,统计**网址时,Google Analytics(GA) 和量子恒道统计(也称量子统计),数据有较大的偏差,仔细找相关资料研究了下,总结如下:
为何GA和量子网站统计(量子统计前身为雅虎统计)结果不同?
首先:没有一种网站统计工具能保证百分之百的准确出现该问题可能有以下几个原因:(1)不同的统计分析系统的算法机制不同;(2)统计代码放置的位置和前后
- 【Linux命令三】Top命令
bit1129
linux命令
Linux的Top命令类似于Windows的任务管理器,可以查看当前系统的运行情况,包括CPU、内存的使用情况等。如下是一个Top命令的执行结果:
top - 21:22:04 up 1 day, 23:49, 1 user, load average: 1.10, 1.66, 1.99
Tasks: 202 total, 4 running, 198 sl
- spring四种依赖注入方式
白糖_
spring
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我
- angular.injector
boyitech
AngularJSAngularJS API
angular.injector
描述: 创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入. 使用方法: angular.injector(modules, [strictDi]) 参数详解: Param Type Details mod
- java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
bylijinnan
Integer
public class PC {
/**
* 题目:生产者-消费者。
* 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
*/
private static final Integer[] val=new Integer[10];
private static
- 使用Struts2.2.1配置
Chen.H
apachespringWebxmlstruts
Struts2.2.1 需要如下 jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar spring.jar
struts2-core-2.2.1.jar struts2-sp
- [职业与教育]青春之歌
comsci
教育
每个人都有自己的青春之歌............但是我要说的却不是青春...
大家如果在自己的职业生涯没有给自己以后创业留一点点机会,仅仅凭学历和人脉关系,是难以在竞争激烈的市场中生存下去的....
&nbs
- oracle连接(join)中使用using关键字
daizj
JOINoraclesqlusing
在oracle连接(join)中使用using关键字
34. View the Exhibit and examine the structure of the ORDERS and ORDER_ITEMS tables.
Evaluate the following SQL statement:
SELECT oi.order_id, product_id, order_date
FRO
- NIO示例
daysinsun
nio
NIO服务端代码:
public class NIOServer {
private Selector selector;
public void startServer(int port) throws IOException {
ServerSocketChannel serverChannel = ServerSocketChannel.open(
- C语言学习homework1
dcj3sjt126com
chomework
0、 课堂练习做完
1、使用sizeof计算出你所知道的所有的类型占用的空间。
int x;
sizeof(x);
sizeof(int);
# include <stdio.h>
int main(void)
{
int x1;
char x2;
double x3;
float x4;
printf(&quo
- select in order by , mysql排序
dcj3sjt126com
mysql
If i select like this:
SELECT id FROM users WHERE id IN(3,4,8,1);
This by default will select users in this order
1,3,4,8,
I would like to select them in the same order that i put IN() values so:
- 页面校验-新建项目
fanxiaolong
页面校验
$(document).ready(
function() {
var flag = true;
$('#changeform').submit(function() {
var projectScValNull = true;
var s ="";
var parent_id = $("#parent_id").v
- Ehcache(02)——ehcache.xml简介
234390216
ehcacheehcache.xml简介
ehcache.xml简介
ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheManager的配置信息的。根据之前我们在《Ehcache简介》一文中对CacheManager的介绍我们知道一切Ehcache的应用都是从CacheManager开始的。在不指定配置信
- junit 4.11中三个新功能
jackyrong
java
junit 4.11中两个新增的功能,首先是注解中可以参数化,比如
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runn
- 国外程序员爱用苹果Mac电脑的10大理由
php教程分享
windowsPHPunixMicrosoftperl
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:
1、Mac OS X 是基于 Unix 的
这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 wi
- 位运算、异或的实际应用
wenjinglian
位运算
一. 位操作基础,用一张表描述位操作符的应用规则并详细解释。
二. 常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对值。
三. 位操作与空间压缩,针对筛素数进行空间压缩。
&n
- weblogic部署项目出现的一些问题(持续补充中……)
Everyday都不同
weblogic部署失败
好吧,weblogic的问题确实……
问题一:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/serve
- tomcat7性能调优(01)
toknowme
tomcat7
Tomcat优化: 1、最大连接数最大线程等设置
<Connector port="8082" protocol="HTTP/1.1"
useBodyEncodingForURI="t
- PO VO DAO DTO BO TO概念与区别
xp9802
javaDAO设计模式bean领域模型
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。
它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。这样,PO独立出来,数据持