一. entity、bo、vo、po、dto、pojo如何理解和区分?
Entity
最常用实体类,基本和数据表一一对应,一个实体一张表。
Bo(business object)
代表业务对象的意思,Bo就是把业务逻辑封装为一个对象(注意是逻辑,业务逻辑),这个对象可以包括一个或多个其它的对象。通过调用Dao方法,结合Po或Vo进行业务操作。
形象描述为一个对象的形为和动作,当然也有涉及到基它对象的一些形为和动作。比如处理一个人的业务逻辑,该人会睡觉,吃饭,工作,上班等等行为,还有可能和别人发关系的行为,处理这样的业务逻辑时,我们就可以针对BO去处理。
再比如投保人是一个Po,被保险人是一个Po,险种信息也是一个Po等等,他们组合起来就是一张保单的Bo。
Vo(value object)
代表值对象的意思,通常用于业务层之间的数据传递,由new创建,由GC回收。
主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象,然后用一个VO对象在控制层与视图层进行传输交换。
Po(persistant object)
代表持久层对象的意思,对应数据库中表的字段,数据库表中的记录在java对象中的显示状态,最形象的理解就是一个PO就是数据库中的一条记录。
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。Vo和Po,都是属性加上属性的get和set方法;表面看没什么不同,但代表的含义是完全不同的。
Dto(data transfer object)
代表数据传输对象的意思
是一种设计模式之间传输数据的软件应用系统,数据传输目标往往是数据访问对象从数据库中检索数据
数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具任何行为除了存储和检索的数据(访问和存取器)
简而言之,就是接口之间传递的数据封装
表里面有十几个字段:id,name,gender(M/F),age……
页面需要展示三个字段:name,gender(男/女),age
DTO由此产生,一是能提高数据传输的速度(减少了传输字段),二能隐藏后端表结构
Pojo(plian ordinary java object)
代表简单无规则java对象
纯的传统意义的java对象,最基本的Java Bean只有属性加上属性的get和set方法
可以额转化为PO、DTO、VO;比如POJO在传输过程中就是DTO
二. sql语句左链接left join--3张表关联
select * fomr 表名A left join 表B on 表A字段=表B的id left join 表c on 表A字段=表c的id
三. maven打包
以前总结过文章详情
四. idea中maven打包出错错误: 程序包koal.usap.client.bean不存在
pom.xml文件
<dependency>
<groupId>koal.usap.client</groupId>
<artifactId>client</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${basedir}\src\lib\koal.usap.client-4.3.0.jar</systemPath>
</dependency>
把包放在src/lib目录下
五. 用duceap打包
1. pom文件中添加
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-libs</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--<excludeScope>provided</excludeScope>-->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<!--取消依赖包的时间戳-->
<useBaseVersion>true</useBaseVersion>
</configuration>
</execution>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.dragonsoft</groupId>
<artifactId>duceap-base</artifactId>
<!--根据框架版本修改-->
<version>2.1.0-SNAPSHOT</version>
<outputDirectory>${project.build.directory}/temp</outputDirectory>
<!--加入平台的启动脚本-->
<includes>META-INF/scripts/**</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.name}-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<!--配置描述文件路径-->
<descriptor>src/main/assembly/assembly.xml</descriptor>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<!--运行jar包时运行的主类,要求类全名-->
<mainClass>com.dragonsoft.StartDemoApplication</mainClass>
<addClasspath>true</addClasspath>
<!--取消MANIFEST.MF中classpath下的时间戳-->
<useUniqueVersions>false</useUniqueVersions>
</manifest>
<manifestEntries>
<Class-Path>koal.usap.client-4.3.0.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
2. 新增文件src/main/assembly/assembly.xml
有引用maven仓库里没有的话需要配置,有个jar放在了src/lib下
<fileSet>
<directory>src/lib</directory>
<outputDirectory>lib</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
![001](C:\Users\Administrator\Desktop\学习要点摘要\学习笔记\复盘\201110\001.png)<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>assembly</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}/temp/META-INF/scripts/</directory>
<outputDirectory>/bin</outputDirectory>
<includes>
<include>*.sh</include>
<include>*.bat</include>
</includes>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/main/webapp</directory>
<outputDirectory>web</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>${project.build.directory}/lib</directory>
<outputDirectory>lib</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/lib</directory>
<outputDirectory>lib</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>lib</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
<fileMode>0755</fileMode>
</fileSet>
</fileSets>
</assembly>
3. src/main/assembly/conf下把配置文件放到conf目录下
点击maven下的打包命令即可
网友评论