一. entity事示、bo早像、vo、po肖爵、dto卢鹦、pojo如何理解和區(qū)分?
Entity
最常用實體類遏匆,基本和數(shù)據(jù)表一一對應(yīng)法挨,一個實體一張表谁榜。
Bo(business object)
代表業(yè)務(wù)對象的意思幅聘,Bo就是把業(yè)務(wù)邏輯封裝為一個對象(注意是邏輯,業(yè)務(wù)邏輯)窃植,這個對象可以包括一個或多個其它的對象帝蒿。通過調(diào)用Dao方法,結(jié)合Po或Vo進行業(yè)務(wù)操作巷怜。
形象描述為一個對象的形為和動作葛超,當然也有涉及到基它對象的一些形為和動作。比如處理一個人的業(yè)務(wù)邏輯延塑,該人會睡覺绣张,吃飯,工作关带,上班等等行為侥涵,還有可能和別人發(fā)關(guān)系的行為,處理這樣的業(yè)務(wù)邏輯時,我們就可以針對BO去處理怠肋。
再比如投保人是一個Po膏执,被保險人是一個Po痊乾,險種信息也是一個Po等等,他們組合起來就是一張保單的Bo笼沥。
Vo(value object)
代表值對象的意思,通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞娶牌,由new創(chuàng)建奔浅,由GC回收。
主要體現(xiàn)在視圖的對象诗良,對于一個WEB頁面將整個頁面的屬性封裝成一個對象乘凸,然后用一個VO對象在控制層與視圖層進行傳輸交換。
Po(persistant object)
代表持久層對象的意思累榜,對應(yīng)數(shù)據(jù)庫中表的字段营勤,數(shù)據(jù)庫表中的記錄在java對象中的顯示狀態(tài),最形象的理解就是一個PO就是數(shù)據(jù)庫中的一條記錄壹罚。
好處是可以把一條記錄作為一個對象處理葛作,可以方便的轉(zhuǎn)為其它對象。Vo和Po猖凛,都是屬性加上屬性的get和set方法赂蠢;表面看沒什么不同,但代表的含義是完全不同的辨泳。
Dto(data transfer object)
代表數(shù)據(jù)傳輸對象的意思
是一種設(shè)計模式之間傳輸數(shù)據(jù)的軟件應(yīng)用系統(tǒng)虱岂,數(shù)據(jù)傳輸目標往往是數(shù)據(jù)訪問對象從數(shù)據(jù)庫中檢索數(shù)據(jù)
數(shù)據(jù)傳輸對象與數(shù)據(jù)交互對象或數(shù)據(jù)訪問對象之間的差異是一個以不具任何行為除了存儲和檢索的數(shù)據(jù)(訪問和存取器)
簡而言之,就是接口之間傳遞的數(shù)據(jù)封裝
表里面有十幾個字段:id菠红,name第岖,gender(M/F),age……
頁面需要展示三個字段:name试溯,gender(男/女)蔑滓,age
DTO由此產(chǎn)生,一是能提高數(shù)據(jù)傳輸?shù)乃俣?減少了傳輸字段)遇绞,二能隱藏后端表結(jié)構(gòu)
Pojo(plian ordinary java object)
代表簡單無規(guī)則java對象
純的傳統(tǒng)意義的java對象键袱,最基本的Java Bean只有屬性加上屬性的get和set方法
可以額轉(zhuǎn)化為PO、DTO摹闽、VO蹄咖;比如POJO在傳輸過程中就是DTO
二. sql語句左鏈接left join--3張表關(guān)聯(lián)
select * fomr 表名A left join 表B on 表A字段=表B的id left join 表c on 表A字段=表c的id
三. maven打包
以前總結(jié)過文章詳情
四. 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>
<!--根據(jù)框架版本修改-->
<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>
習(xí)要點摘要\學(xué)習(xí)筆記\復(fù)盤\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下的打包命令即可