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框架的最有效学习方式:
先不要问为什么,先把框架搭起来,先学会怎么用。
然后在研究底层的实现原理。
上一篇: 反射获得对象,方法,构造方法,并赋值
下一篇: Docker Compose
推荐阅读