发表于: 2017-05-08 18:10:20

1 1288


今日完成

终于结合完了mybatis,spring,并编写了service与DAO层的单元测试,运行全无异常。

附上代码链接,单元测试在test文件夹cn.yxy.t包下。

已改数据库为服务器的数据库,可以直接下载代码运行。


这是最后的包结构,其中daoImpl与dbc_pool已弃用。daoImpl被mybatis实现功能,pool为自己搞的一个简单连接池,但是通过spring可以很简单的启用c3p0。


配置文件的存放目录,spring-web暂时没用。


添加一个线上学号的属性,只需改动StudentMapper.xml,Student类的toString和数据表即可

(当时还改了很多乱七八糟的东西,好像是没用spring配置还是)


加了根据姓名查找student的方法,使用的是mybatis的@Select()方式


实验性简单的Service层,impl中简单的使用了log4j


DAO中mybatis实现的插入数据始终是返回1,但是可以用stu.getID得到id,无法对insert xml添加resultType属性,在service层写了return id


深度思考

clean,install,package,deploy分别代表什么含义?

google后:clean清理target目录所有文件,install安装project到本地库,deploy走完项目整个build周期

怎么样能让Maven跳过JUnit?

google后:@Ignore注解,或命令行mvn clean test -Dtest=ATest,BTest

为什么要用Log4j来替代System.out.println?

性能好,方便调整输出级别以及输出到不同位置,不过Java8似乎自带的log就有这个功能。

怎么进行分页数据的查询,如何判断是否有下一页?

google后:用limit #offset#, n+1 页面展示n条,如果取到了n+1条,显示下一页

为什么不可以用Select * from table?

表数据太多,性能会很差,而且*对NULL值完全不计入

什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?

贫血模型只有对应的数据项,只有toSring()和set,get而没有对数据进行处理的方法

充血模型中会提供对对象进行操作的方法,这样破坏了代码的分层清晰,可能导致一些混乱

尤其对于初学者最好完全使用贫血模型,因为无法合理判断这个什么方法可以合理充血

Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

IOC控制反转,spring提供了把类包装成一个bean放在其容器中的功能,借助spring的ioc创建实例,可以方便的用spring配置各种依赖关系。

为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?

interface是给调用者看的,这种分层让代码更加清晰,也便于调整或使用其他方式完成功能

为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?

一个成品软件,总不能把异常代码给用户看吧,至少包装一下error-1234;

try/catch在可能会发生异常的代码上下,比如读取文件,得到连接,等与外界交互时吧;

当然有可能出现这种错误,多久发生一次???用户越多,发生的次数越多!别,我不知道。

日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?

分清info,debug,error,warn根据重要性打在不同的位置

比如错误,非崩溃性,可以打在错误日志中,发生时间,错误类型,那个类,那个方法

为什么需要单步调试?Debug的时候IDE是怎么找到源码的?

单步调试精准观察每一步,每个变量的变化,这时候你可能发现有些东西与预期不符,异常数据等

IDE怎么找的源码,问题是我的源码我的依赖库不一直在他那吗。。根据路径找吧

可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?

猜测可,至少mvn test的单元测试是可以的

猜测,看错误日志,找到对应发生错误的类,针对它各种方法试图还原错误,然后修改代码


明日计划

任务2的restful及可能tomcat


收获

实现基本SSH项目结构(control层,web未)

spring各种知识

mybatis-spring时各项属性掌握


问题

关键是我要提交任务一了

我应该有哪里想错了吧,但是我现在还不知道



返回列表 返回列表
评论

    分享到