- MyBatis的if标签的基本使用
君子剑mango
#MyBatis框架mybatisjava开发语言
在MyBatis框架中,if标签用于在构建SQL语句时,根据参数条件判断的结果,动态地选择加入或不加where条件中。一常见使用在使用MyBatis处理查询逻辑的时候,常用的是判断一些参数是否为空,列举常用的几种情况展示1.1数据准备1.1.1创建表模型CREATETABLE`approval_info`(`id`BIGINTNOTNULLAUTO_INCREMENT,`info_name`VAR
- 【设计模式】【结构型模式】外观模式(Facde)
FLZJ_KL
设计模式设计模式外观模式java
hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD2025本人正在沉淀中…博客更新速度++欢迎点赞、收藏、关注,跟上我的更新节奏当你的天空突然下了大雨,那是我在为你炸乌云文章目录一、入门什么是外观模式?为什么要有外观模式?如何实现外观模式?二、外观模式在框架源码中的运用SpringFramework中的JdbcTemplateJavaNIO的Files工具类(JDK
- 【Spring:Caused by java.lang.ClassNotFoundException 】
m0_74823490
面试学习路线阿里巴巴javaspringtomcat
Spring:Causedby:java.lang.ClassNotFoundException:org.springframework.dao.support.DaoSupportSpring中使用Mybatis连接数据库时可能会出现以上错误,但是当出现以上错误时说明你在applicationContext.xml文件中所做的相关操作:spring整合myBATis后控制的创建连接用的对象加载M
- SpringBoot建立SSH通道整合S3Elasticache(Redis),并实现Redis多库切换
IT但丁
JavaWebredisjedisspringbootaws
目录一、背景1、问题2、解决二、建立SSH通道1、pom引入依赖2、创建sshconfig3、SSHConnection程序三、Springboot整合Redis1、引入依赖2、配置信息3、RedisConfig的编写(切库处理配置)4、Redis操作的工具类四、两个大坑1、长时间未操作,连接重置2、长时间未操作,无法获取resource五、总结一、背景使用SpringBoot自带的redis框架
- 【HarmonyOS NEXT】示例代码-水印添加能力
这货就是木子全呀
HarmonyOS示例代码harmonyos
介绍本示例为开发者展示常用的水印添加能力,包括两种方式给页面背景添加水印、保存图片添加水印、拍照图片添加水印。效果预览工程目录解释├──entry/src/main/ets/│├──component││└──NavBar.ets //顶部导航条│├──constants││├──Utils.ets //工具类││└──Constants.ets
- SpringBoot3整合MyBatis-Plus
Mais10011
springbootmybatis
准备数据CREATETABLE`t_user`(idBIGINTNOTNULLCOMMENT'主键ID',nameVARCHAR(30)NULLDEFAULTNULLCOMMENT'姓名',ageINTNULLDEFAULTNULLCOMMENT'年龄',emailVARCHAR(50)NULLDEFAULTNULLCOMMENT'邮箱',PRIMARYKEY(id));INSERTINTO`t_
- Spring Boot2.x教程:(八)优雅地在工具类中使用@Autowired注解
欧阳方超
SpringBootSpringCloud开发遇到的小问题springboot后端java
优雅地在工具类中使用@Autowired注解1、概述2、理解@Autowired基本用法3、静态方法与@Autowired的冲突4、优雅解决方案4.1、使用@PostConstruct4.2、使用构造器注入5、总结大家好,我是欧阳方超,可以扫描下方二维码关注我的公众号“欧阳方超”,后续内容将在公众号首发。1、概述在SpringBoot中,使用@Autowired注解来注入Bean是一个常见的做法。
- MyBatis-Plus介绍及基本使用
墨鸦_Cormorant
#Java持久层mybatismybatis-plusmybatisPlus
文章目录概述介绍MyBatis-Plus常用配置分页插件配置类注解配置快速入门maven依赖编写配置文件编写启动类编写MybatisPlus配置类代码生成器:MybatisPlusGeneratormaven依赖代码生成器核心类概述介绍MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。主页:传送门引入MyBati
- mybatis-plus逆向code generator pgsql实践
松树戈
工具使用mybatisspringboot
mybatis-plus逆向codegeneratorpgsql实践环境准备重要工具的版本供参考pom依赖待逆向的SQL配置文件CodeGenerator配置类配置类说明环境准备重要工具的版本jdk1.8.0_131springboot2.7.6mybatis-plus3.5.7pgsql14.15供参考pom依赖4.0.0com.tghparent-demo0.0.1-SNAPSHOTparen
- MyBatis 源码解析:动态 SQL 生成的基本原理
捕风捉你
MyBatis源码解读mybatistomcat
摘要MyBatis提供了灵活的动态SQL功能,使得开发者可以根据业务需求在运行时生成不同的SQL语句。动态SQL是MyBatis最具特色的功能之一,它允许我们通过条件拼接来生成复杂的查询语句。本文将通过自定义实现一个简化的动态SQL生成器,解析其工作原理,并结合MyBatis的源码进行深入讲解。前言传统的SQL查询往往需要开发者根据不同的业务逻辑手动拼接SQL语句,而这种方式不仅容易出错,也不够灵
- SSM框架搭建
皇家大厨
笔记
此文参考书籍为ACCP软件工程师——使用SSM框架开发企业级应用8.0版文章目录遇到的问题:1.错误:couldnotfindresourcesrc/dao/UserMapper.xml和mybatis启动异常:Logginginitializedusing'classorg.apache.ibatis.logging.log4j.Log4jImpl'2.Eclipse中的路径问题:3.log4j
- Hutool-------值得推荐的java工具库
丶Apache
Java
网址:https://www.hutool.cn/docs/#/安装Maven在项目的pom.xml的dependencies中加入以下内容:cn.hutoolhutool-all5.3.7Gradlecompile'cn.hutool:hutool-all:5.3.7'包含组件一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时
- Hutool-超级好用的Java工具类库
独往丶
Java工具库java
官方网址:Hutool简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool是项目中“util”包友好的替代,它节省
- MybatisPlus + SpringBoot + Vue 实现自定义联表查询,返回 HashMap<String, Object> 条件,分页,模糊,total
沐沐uuu
springboot后端java
MybatisPlus+SpringBoot+Vue实现自定义联表查询,返回HashMap条件,分页,模糊,totalMybatisPlus极大的简化了单表查询的重复操作,但是在联表的时候,特别是在查询的结果集没有对应实体类的时候,就还要手写sql,手写分页和模糊,返回HashMap对象。这里我写一个Demo,以方便以后的开发中遇到这种情况。mapper.xmlSELECTa.APPLICATIO
- druid mysql读写分离_Spring Boot + Mybatis + Druid 实现MySQL一主多从读写分离
咖啡碎冰冰
druidmysql读写分离
SpringBoot读写分离实现原理实现方式主要是通过扩展SpringAbstractRoutingDataSource这个类充当DataSource路由中介,在运行当中根据自定义KEY值动态切换正真的DataSource。具体实现创建测试库、表:createdatabase`mytest_db`;CREATETABLE`t_user`(`id`int(11)NOTNULLAUTO_INCREME
- Spring Boot + MyBatis + MySQL 实现读写分离
2301_79099287
程序员springbootmybatismysql
spring-boot-starter-testtestorg.springframework.bootspring-boot-maven-plugin3.2.数据源配置application.ymlspring:datasource:master:jdbc-url:jdbc:mysql://192.168.102.31:3306/testusername:rootpassword:123456d
- Spring Boot 配置 Mybatis 读写分离
xiaoyao888
springbootmybatisjavamybatis读写分离spring读写分离
JPA的读写分离配置不能应用在Mybatis上,所以Mybatis要单独处理为了不影响原有代码,使用了增加拦截器的方式,在拦截器里根据SQL的CRUD来路由到不同的数据源需要单独增加Mybatis的配置@ConfigurationpublicclassMyBatisConfig{ @Bean publicSqlSessionFactorysqlSessionFactory(DataSource
- Mybatis中的Dao接口工作原理
扯淡吧 Pino曹
mybatissqljava
简要概述一下Mybatis中的Dao接口工作原理Dao接口就是Mapper接口。接口的全限名就是映射文件中的namespace的值接口的方法名就是映射文件中的MappedStatement的id值接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement。Dao接口的工作原理是J
- Mybatis中#{}和${}的用法
光阴不负卿
javamybatisMySQLjavasqlmybatis
1、#{}将传入的数据当作一个字符串,会对传入的数据加上一个双引号。比如,select*fromstudentwherestudent_name=#{studentName}如果传入的值为xiaoming,那么解析成sql的值为student_name="xiaoming"。2、${}将传入的数据直接显示生成在sql中。如:select${fieldNmae}fromstudentwherestu
- MyBatis常见知识点
2301_80148369
mybatis
#{}和${}的区别是什么?答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于原样文本替换,可以替换任意内容,比如${driver}会被原样替换为com.mysql.jdbc.Driver。一个示例:根据参数按任意字段排序:select*fromusersorderby${orderCols}orderCols可以是name、namedesc、name,se
- 【课程设计】Java EE SSM 试卷管理系统
鱼弦
课程设计java-eejava
JavaEESSM试卷管理系统简介试卷管理系统是一个用于教育机构、培训中心等单位的在线考试和评估工具。该系统帮助教师管理考试题目、生成试卷,并将试卷导出为Word文档。应用使用场景学校与教育机构:用于日常测验、期中和期末考试。企业培训:用于员工技能测试和评估。在线教育平台:用于提供学生练习题和模拟考试。原理解释架构系统基于JavaEE开发,采用了Spring、SpringMVC和MyBatis(S
- 总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证
ideal-cs
总结javasslhttps自签证书验证ssl验证https忽略证书验证https工具类
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证一·HttpsUtil工具类二·SSLUtil工具类一·HttpsUtil工具类packagecom.example.util;importjavax.net.ssl.HttpsURLConnection;importjavax.net.ssl.SSLContext;imp
- LambdaQueryWrapper的使用
java
原文链接项目GitHub地址:https://github.com/Snowstorm0/learn-lambda-query-wrapper项目Gitee地址:https://gitee.com/Snowstorm0/learn-lambda-query-wrapper1添加maven依赖在pom中添加如下依赖:com.baomidoumybatis-plus-boot-starter3.5.3
- 2月第二讲:mybatis是如何识别分表位的
2501_90442144
mybatis
带着问题,我花了不少时间深入了读了一下这部分的源码,终于搞清楚了,借本文分享一下。本文主要环境是mybatis-plus-boot-starter3.4.3,不过用的基本上仍然是mybatis的特性。流程图以查询为例,可以先看下流程图,大致了解一下整个过程。关键的类和对象在流程图里出现了一些类和其实例化的对象,有必要选其中关键的介绍一下。MappedStatement类全名org.apache.i
- 【MyBatis】如何在数据插入后获取对应的主键 ID
程序员谷美
Java实战MyBatismybatisjava数据库
在数据库操作中,我们经常需要在插入数据后立即获取生成的主键ID。这种需求在需要维护关联表数据或进行后续业务处理时尤为常见。本文将深入探讨MyBatis中获取插入主键的多种实现方式,并解析其底层原理及性能影响。一、单条数据插入获取ID1.useGeneratedKeys方式(推荐)INSERTINTOuser(name,age)VALUES(#{name},#{age})原理:通过JDBC的Stat
- vue写一个axios的拦截器
蓝胖子不是胖子
vue.js前端javascript
方便直接带入项目的工具类importaxios,{AxiosResponse}from'axios'importqsfrom'qs'import{ElMessage}from'element-plus'import{useUserStore}from'@/store/modules/user'importcachefrom'@/utils/cache'import{ElMessageBox}fro
- java对list分页[搭配分页工具类]
想想671
javalistwindows
packagecn.com.yawei.hotline.jinan.assignment.common.utils;importjava.util.ArrayList;importjava.util.List;publicclassPageUtil{/***要分页的list数据*/privateListmyList;/***请求的页号,默认第1页*/privateintpageNum=1;/***
- java list 内存分页_Java List分页功能实现代码实例
gzq3
JavaList分页功能实现代码实例这篇文章主要介绍了JavaList分页功能实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下今天,工作上,由于业务的一些特殊性,需要拿到数据后在java代码中进行分页。写了一个工具类,记录如下:importjava.util.ArrayList;importjava.util.List;importor
- 详细的讲解mybtis中动态标签有哪些和他的作用
胡图蛋.
java服务器前端
MyBatis提供了丰富的动态标签,这些标签能让开发者根据不同的条件动态生成SQL语句,极大地增强了SQL语句的灵活性和可维护性。以下是对MyBatis中常见动态标签的详细讲解:1.标签功能:标签是最基础且常用的动态标签,它用于条件判断。根据传入参数的不同情况,决定是否将某部分SQL语句添加到最终生成的SQL中。使用方式:通过test属性指定一个OGNL(对象图导航语言)表达式,当该表达式的结果为
- java对list<Object>进行手动分页
枯枫叶
该方法使用的jdk1.6以后自带的分页工具类实现publicstaticvoidmain(String[]args){ArrayListlist=newArrayListPageInfogetPageInfo(intcurrentPage,intpageSize,Listlist){inttotal=list.size();if(total>pageSize){inttoIndex=pageSiz
- 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独立出来,数据持