crm開發及SVN工具的使用注意事項
SVN工具的使用注意事項:
1、編譯報錯的程式絕對不能提交到倉庫上。
2、具有本地環境特色的檔案不要提交到倉庫上,會影響其它程式設計師。
比如說每個程式設計師的TomCata安裝位置不一樣
.classpath 這後面都是顯示每一位員工的姓名
<classpathentry kind="lib" path="D:/tomcat/tomcat9/apache-tomcat-9.0.0.M10/lib/jsp-api.jar"/> <classpathentry kind="lib" path="D:/tomcat/tomcat9/apache-tomcat-9.0.0.M10/lib/servlet-api.jar"/> <classpathentry kind="output" path="build/classes"/>
- 代表和倉庫不同步 ./這個檔案在倉庫中有,但是不一樣了 對號:與倉庫同步了 !:
?代表在倉庫中還沒有。
圓柱體表示沒有修改過,表示此檔案已經在倉庫中存在了
3、最好自己改了哪個提交哪個,這是最保險的。 4、有一些團隊要求程式設計師編寫的程式必須經過嚴格的單元測試之後方可提交。 5、提交檔案的時候保持鎖定儘可能不選擇。會影響團隊的團結。(用好Lock) 6、提交檔案的時候反覆檢查是否正確,確認正確之後才可提交。 7、SVN中提交的間隔時間不要太久,太久的話和倉庫中脫節就非常嚴重了。 8、最好是自己的一個完整功能點開發結束之後,驗證沒有任何問題則提交。 9、提交的時候需要在log中標明。 10.與資源庫更新意思:並不是更新程式碼,而是一個檢視,你可以看到資源庫裡面的內容狀態
怎麼解決衝突?
1、先更新,再提交。(放心,您的程式碼不會被覆蓋的。)
更新之後,版本和倉庫當中的一致了。然後再提交,生成一個新版本。
更新之後,SVN會生成三個臨時檔案,修改程式之後,臨時檔案可以刪除了。
2、程式碼怎麼改?
* 自己能夠決定的,當然是自己動手改了。
* 當自己的程式碼和別人的程式碼衝突嚴重的時候,無法抉擇的時候,需要
找同事協商程式碼應該如何修改。
怎麼避免衝突呢?
1、勤更新,勤提交。(提交之前先更新)
2、用好Lock
第一個mybatis程式實現步驟:
1、新建一個java project即可。
2、引入mybatis的jar
mybatis-3.4.5.jar
3、引入mysql的驅動jar
mysql-connector-java-5.1.23-bin.jar
4、新建包:com.wkcto.mybatis.test
5、新建測試類:Test01,提供main方法,在main方法當中,貼上以下程式碼:
main{
String resource = “com/wkcto/mybatis/resources/mybatis-config.xml”;
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
6、新建包:com.wkcto.mybatis.resources
7、在com.wkcto.mybatis.resources包下新建一個mybatis-config.xml檔案
8、關於mybatis-config.xml檔案:
注意:該檔案是mybatis的核心配置檔案,在該檔案當中配置了連線資料庫的資訊、事務管理器、連線池等。
9、編寫mybatis-config.xml檔案:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/wkcto" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>
10、編寫main方法,通過SqlSessionFactory獲取SqlSession物件:
SqlSession sqlSession = sqlSessionFactory.openSession(); // sqlSession專門用來執行sql語句的。
sqlSession.commit();
sqlSession.rollback();
sqlSession.close();
注意:sqlSession預設情況下自動提交機制是關閉的。
11、寫sql語句:在一個所謂的SqlMapper.xml檔案中編寫sql語句。(我們把這個檔案叫做sql對映檔案)
在src下新建SqlMapper.xml檔案。(不一定在src的根目錄下,只要在src中即可。也就是說只要在類路徑下就行。)
我這裡就在這個包下新建了:com.wkcto.mybatis.resources
SqlMapper.xml檔案
12、在mybatis的核心配置檔案中配置該檔案的路徑:
<mappers>
<mapper resource="com/wkcto/mybatis/resources/SqlMapper.xml"/>
</mappers>
13、編寫SqlMapper.xml檔案:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
</mapper>
14、定義一個domain/javabean:Student
public class Student{
sid
sname
sbirth
}
故意:屬性名和資料庫表當中的列名不一致。
資料庫列名:id name birth
15、在SqlMapper.xml檔案中配置sql語句:
<select id="getAll" resultType="com.wkcto.mybatis.domain.Student">
select
id,name,birth
from
tbl_student
</select>
16、在main方法當中執行這條sql語句。
List<Student> studentList = sqlSession.selectList("getAll");
注意:getAll必須是sql語句的id。
重點掌握的知識點:
select
id as sid,name as sname,birth as sbirth
from
tbl_student
查詢結果集的列名必須和java類的屬性名一一對應。
不一致的時候,需要使用as關鍵字起別名。
**********************
1、readme檔案在實際的開發中,也是需要提供的,在該檔案中描述專案的架構、配置過程等資訊。另外可能還會有一些注意事項。
2、回顧JDBC,思考:JDBC開發存在哪些缺點?
實現一個什麼功能呢?
從資料庫當中查詢所有學生資訊,然後遍歷結果集,取出學生資訊之後封裝成學生物件,
將學生物件儲存到List集合當中。
準備資料:
建立一個全新的資料庫:
create database wkcto;
準備建立一張表:學生表
create table tbl_student(
id char(32) primary key,
name varchar(255),
birth char(10)
);
準備資料:
insert into tbl_student(id,name,birth) values(‘1’ , ‘zhangsan’ , ‘1980-10-11’);
insert into tbl_student(id,name,birth) values(‘2’ , ‘lisi’ , ‘1981-10-11’);
3、JDBC開發有哪些缺點?(面試題,這個題有話說*************
在實際開發中,我們主要對資料庫進行增刪改查工作,比如查詢結果集資訊量龐大, 對結果集進行遍歷出每個學生學生物件,
再把學生物件封裝成集合中,步驟重複的程式碼太多,這個時候引出了框架。如果不用框架,對於這段重複的程式碼,我們也可以使用反射機制實現。
)
* JDBC開發尤其在處理結果集方面,程式碼非常繁瑣、冗餘(出現了大量的重複程式碼)
重複的從結果集中取資料,重複的將取出的資料賦值到物件屬性上。
while(rs.next()){
String id = rs.getString("id"); // 重複的從結果集中取資料
String name = rs.getString("name");
String birth = rs.getString("birth");
//封裝javabean
Student stu = new Student();
stu.setId(id); // 重複的set賦值
stu.setName(name);
stu.setBirth(birth);
// 將學生新增到集合
studentList.add(stu);
}
有沒有這樣的一段程式,可以自動從結果集中取出資料,可以自動的將取出
的資料set到物件屬性上呢?
完全可以,我們程式設計師自己也可以寫。不一定藉助框架。
只不過這段程式碼需要編寫反射機制的程式碼。
對以上程式碼進行封裝,需要知道的前提條件是什麼?
資料庫表當中的欄位名、java程式中類的屬性名
假設現在你已經知道了:欄位名和屬性名...
tbl_student
id name birth
------------------------------
public class Student{
id
name
birth
}
//這是已知條件:
String[] columnNames = {"id","name","birth"};
String[] propertyNames = {"id","name","birth"};
String className = ".....Student";
// 封裝這個程式碼
Class c = Class.forName(className);
List list;
while(rs.next()){
Object obj = c.newInstance(); // Student obj = new Student();
Object[] values = ....;
for(i....){
String value = rs.getString(columnNames[i]);
// 把以上的value放到陣列當中...
values[i] = value;
}
for(i...){
String propertyName = propertyNames[i]; // id
// setId
String methodName = "set" + propertyName.substring(0,1).toUpperCase() + propertyName.substring(1);
Method method = c.getDeclaredMethod(methodName, String.class);
// 呼叫method
method.invoke(obj , values[i]); // obj.setId("1");
}
list.add(obj);
}
mybatis已將將上面的程式碼完成了。
使用mybatis之後,我們不再需要從結果集中取資料,把結果集的資料封裝到java物件當中。
這個過程完全交給mybatis框架去完成。
* JDBC的第二缺點(面試時候怎麼說,可以說,程式碼耦合度太高了,牽一髮而動全身,每個增刪改查環節出錯都會影響程式碼的執行,這時候在XML解決了高耦合的特點,直接在XML檔案中修改SQL語句,大大提高了專案執行效率,違背了ocp,對增加開放,對修改關閉。,後話*****這時候增加代理機制可以******):
sql語句寫到了java程式中。
在實際開發中為了讓專案的執行速度提高,sql語句是需要不斷優化的。
也就是說sql語句是不斷的修改。
違背了開閉原則:OCP。
在mybatis當中sql語句可以在XML檔案中配置。解決了這個問題。
mybatis就是封裝了JDBC。簡化了JDBC的程式設計。使用mybatis開發效率比JDBC要高很多。
4、什麼是框架?
* 在存在形式上,框架是一堆jar包。jar包當中當然是class位元組碼檔案。別人寫好的。
* 框架封裝的程式碼都是公共的程式碼。將這些jar包直接引入到專案當中,我們基於這些寫好的class檔案“繼續”開發。
* 使用框架的目的是:提高開發效率。(我們只負責編寫變化那一部分。)
* javaee的框架很多:
Spring
SpringMVC
Struts
Struts2
MyBatis
Hibernate
......
mybatis和hibernate框架都是持久層框架。都是dao層。
專門和資料庫打交道,專門封裝JDBC。簡化JDBC程式設計。
5、mybatis框架以前叫做iBatis,iBatis後來更名為MyBatis,我們這裡使用的版本是mybatis-3.4.5(版本號需要記住。)
6、大部分框架都是:
反射機制 + XML配置檔案。
7、初學者學習java框架的最有效學習方式:
先不要問為什麼,先把框架搭起來,先學會怎麼用。
然後在研究底層的實現原理。