发表于: 2018-03-31 22:48:57
1 573
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
一、继续对jdbcTemplate的补充
最终的结构如上所示
public class PersonServiceImpl implements PersonService{
IPersonDao personDao=new PersonDaoImpl();
@Override
public void add(Person person) {
personDao.addPerson(person);
}
@Override
public int update(Person person) {
return personDao.updatePerson(person);
}
@Override
public int delete(int id) {
return personDao.deletePerson(id);
}
@Override
public List<Person> listAll() {
return personDao.selectAll();
}
@Override
public Person selectId(int id) {
return personDao.selectById(id);
}
@Override
public Person selectName(String name) {
return personDao.selectByName(name);
}
@Override
public void clear() {
personDao.deleteAll();
}
}
public class PersonServiceTest extends TestCase {
IPersonDao personDao=new PersonDaoImpl();
public void testAdd() {
try{for (int i = 0; i < 100; i++) {
Person person = new Person("libai" + i, 25, "212121");
personDao.addPerson(person);
}
}catch (Exception e){
System.out.println(e.getMessage());
System.out.println("姓名有重复,请确认");
}
}
public void testUpdate() {
try{for (int i=1;i<105;i++) {
Person person = new Person(i, "dufu" + i, 25, "2122111");
if (personDao.updatePerson(person) == 0) {
System.out.println("修改失败,第"+i+"条信息不存在");
}
}
}catch (Exception e){
System.out.println(e.getMessage());
System.out.println("姓名已存在,请确认");
}
}
public void testDelete() {
for (int i=30;i<105;i++){
if (personDao.deletePerson(i)==0){
System.out.println("删除失败,第"+i+"条信息不存在");
}
}
}
public void testListAll() {
List<Person> personList=personDao.selectAll();
for(Person p1:personList){
System.out.println(p1);
}
}
public void testSelectId() {
try{
System.out.println( personDao.selectById(2));
}catch (Exception e){
System.out.println(e.getMessage());
System.out.println("查无此人,请确认");
}
}
public void testSelectName() {
try{
System.out.println(personDao.selectByName("dufu3"));
}catch (Exception e){
System.out.println(e.getMessage());
System.out.println("查无此人,请确认");
}
}
public void testClear() {
personDao.deleteAll();
}
}
public class Main {
public static void main(String[] args){
Person p1;
PersonService personService=new PersonServiceImpl();
Logger logger=Logger.getLogger(Main.class);
//标记初始时间
long t1=System.currentTimeMillis();
//插入100条数据
try{
for(int i=0;i<100;i++) {
p1 = new Person("lixunhuan" +i, 58, "45454");
personService.add(p1);
}
}catch (Exception e){
System.out.println(e.getMessage());
logger.error("插入数据重复,请确认后重新插入");
}
//修改数据,其中后五条为空,修改失败提示
try {
for(int i=50;i<105;i++) {
p1 = new Person(i, "libai"+i, 58, "45454");
if (personService.update(p1) > 0) {
logger.debug("修改成功");
}else {
logger.info("修改失败,第"+i+"条信息不存在");
}
}
}catch (Exception e){
System.out.println(e.getMessage());
logger.error("修改的姓名与原数据库有重复,请确认后再修改");
}
//删除数据,其中后五条数据为空,删除失败提示
for(int i=20;i<105;i++){
if(personService.delete(i)>0){
logger.debug("删除成功");
}else {
logger.info("删除失败第"+i+"条信息不存在");
}
}
//查找全部
List<Person> personList= personService.listAll();
for (Person p:personList){
System.out.println(p);
}
//按照id查找,当找不到时抛出错误
try{Person person=personService.selectId(40);
System.out.println(person);
}catch (Exception e){
System.out.println(e.getMessage());
logger.info("未找到指定ID,请确认后重试");
}
//按照姓名查找,当找不到时抛出错误
try{Person person1=personService.selectName("lixunhuan2");
System.out.println(person1);
}catch(Exception e){
System.out.println(e.getMessage());
logger.info("未查到指定姓名,请确认后重试");
}
//清空数据表
personService.clear();
long t2=System.currentTimeMillis();
System.out.println("此次程序花费时间为"+(t2-t1));
}
}
二、任务一总结
1.mysql的安装,运行,sql语言的学习,包括最常用的curd和建表,添加主键,自增,添加属性等,虽然大部分都可以使用navicat实现但是还是需要了解掌握的,还有对索引的理解以及使用上的抉择。数据库是程序运行最基本的信息载体,没有数据库,程序运行得再完美也只是暂时的。
2.关于jdk,mysql,navicat,maven,idea,xshell等各个工具特性,作用的认识,在使用工具之前先得知道为什么用它,比不用它有什么好处,比用其他同类型又有什么好处。有的优点是要慢慢在实践中去感受的。
3.各个工具的下载安装配置,以及各个配置比如本地仓库改变的含义。尤其是maven。
4.最基本jdbc,mybatis的编写,jdbctemplate,mybatis-spring的整合,配置文件中各个属性的含义,以及各个版本的区别,需不需要关闭连接,是否需要手动提交事务之类。加深对spring框架的理解,特别是spring中的IOC和DI到底是指什么,为什么需要这样,还需要慢慢理解。
5.junit的使用,理解单元测试的含义,慢慢习惯敏捷开发的思想。
6.log4j的使用,基本的配置文件,以及什么情况用什么级别的理解。
7.一个程序最基本的项目结构,model,dao,service等层分清,贫血模型中各层如何编写。为什么要用get/set方法,为什么要有接口和实现类,牵涉到封装,继承,多态的理解是应用。
8.构造方法,成员方法,静态方法,抽象方法,内部方法等分清楚。成员变量,静态变量,实参,形参,局部变量,常量分清。接口,实现类,标准类,内部类,抽象类,子类,父类等概念区别开。
9.学会看报错,debug调试,知道基本的异常应该怎么处理怎么处理,怎么避免。调试时注意控制变量,可以锁定问题源。
10.学会远程连接服务器,使用命令行进行基本的操作
11.注意代码规范,符合命名规则
三、代码上传github (参考文档: http://www.cnblogs.com/best/p/7474442.html https://blog.csdn.net/Hanani_Jia/article/details/77950594)
1.Git是一种在全球范围内广受欢迎的版本控制系统。除此之外还有SVN,CVS,VSS,TFS等
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单说就是用于管理多人协同开发项目的技术。
2.常用术语
1)、仓库(Repository)
受版本控制的所有文件修订历史的共享数据库
2)、工作空间(Workspace)
本地硬盘或Unix 用户帐户上编辑的文件副本
3)、工作树/区(Working tree)
工作区中包含了仓库的工作文件。您可以修改的内容和提交更改作为新的提交到仓库。
4)、暂存区(Staging area)
暂存区是工作区用来提交更改(commit)前可以暂存工作区的变化。
5)、索引(Index)
索引是暂存区的另一种术语。
6)、签入(Checkin)
将新版本复制回仓库
7)、签出(Checkout)
从仓库中将文件的最新修订版本复制到工作空间
8)、提交(Commit)
对各自文件的工作副本做了更改,并将这些更改提交到仓库
9)、冲突(Conflict)
多人对同一文件的工作副本进行更改,并将这些更改提交到仓库
10)、合并(Merge)
将某分支上的更改联接到此主干或同为主干的另一个分支
11)、分支(Branch)
从主线上分离开的副本,默认分支叫master
12)、锁(Lock)
获得修改文件的专有权限。
13)、头(HEAD)
头是一个象征性的参考,最常用以指向当前选择的分支。
14)、修订(Revision)
表示代码的一个版本状态。Git通过用SHA1 hash算法表示的ID来标识不同的版本。
15)、标记(Tags)
标记指的是某个分支某个特定时间点的状态。通过标记,可以很方便的切换到标记时的状态。
3.版本控制分类
①本地版本控制,如RCS
②集中版本控制,所有的版本数据都保存在服务器上,用户本地只有自己以前的版本,如svn,cvs,vss
③分布式版本控制,所有版本信息仓库全部同步到本地的每个用户,但是也增加了存储空间的占用
4.Git优缺点
优点:
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
- 离线工作。
缺点:
- 模式上比SVN更加复杂。
- 不符合常规思维。
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
5.基本上传操作
①在GitHub创建一个库task1
②创建ssh密匙,绑定到GitHub上
③clone task1到本地
④将需要上传的文件放入此文件夹下,git add [文件],git commit -m "备注" ,git push origin master,三步可完成推送
⑤需要修改的话直接将工作空间的文件修改后再推送即可。
上传后如下
明天计划的事情:(一定要写非常细致的内容)
明天应该可以任务二相关知识的学习了,新的一个月新的起点
遇到的问题:(遇到什么困难,怎么解决的)
关于git的使用,刚开始一脸懵逼,后来看傻瓜式教程一步步学会了上传,其他操作还要再研究一下
收获:(通过今天的学习,学到了什么知识)
对于git和github这些有了一个比较直观的认识
评论