发表于: 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时各项属性掌握
问题
关键是我要提交任务一了
我应该有哪里想错了吧,但是我现在还不知道
评论