大数据1028第三阶段第一周周考错题整理

继上次阶段测试最低分85分,我又一次刷新了自己的最低分数线,这次才考了72分,比平均分还低了1点多分.粗略看了一下,感觉有的地方老师还多给分了.我觉得我该面壁思过,奈何还有一堆代码等我写!唉,我太难了.

1.Mybatis常用的动态SQL的标签有哪些

我的答案:(满分10分,得分8分)

1.if

2.where

3.set

4.foreach

答案解析:

if,choose,when,otherwise,trim,set,where,foreach

个人批注:emmm,这个题的答案其实除了那个trim没记住之外,其实别的我都记得,不过我写的时候只写了四个老师讲的,最常用的.emmm,按照答案来看的话,扣分也是应该的.

2.Mybatis的Xml映射文件中,不同Xml映射文件,id是否可以重复

我的答案:(满分10分,得分6分)

不同的映射文件,id是可以重复的.

因为这里映射文件的id,指代的其实是mapper接口中的方法名.既然是不同的映射文件,那么肯定也是不同的mapper.后续调用的时候,是不同的对象去调用各自的方法.即使方法名相同也无所谓.

答案解析:

不同的Xml映射文件,如果配置了namespace,那么id可以重复;如果没有配置namespace,那么id不能重复.

个人批注:这个题真的是我理解有问题了.因为老师一开始写这个映射文件的时候,就全都写了namespace,我就以为这个namespace是必须写的,只有写了namespace,才能对应上那些类和方法.刚刚问了下助教老师,其实这个namespace是可以不写的,不写的时候,也可以直接读到id值.这个时候,如果两个映射文件都没配置namespace,又有重复id,那就很尴尬了,两个一样的不知道用那个.

3.当实体类中的属性和表中的字段名不一样,如何实现对象的封装

我的答案:(满分10分,得分6分)

使用resultMap对对象进行封装

<resultMap id="resultMap的值">

设置属性名和对应的字段名

</resultMap>

写返回参数的时候写resultMap="resultMap的id值"

答案解析:

1. 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致

2.通过<resultMap>来映射字段名和实体类属性名的一一对应的关系

个人批注:这个题的两种方式其实我都知道,不过一开始纠结于,问题中的"如何实现对对象的封装".一开始就觉得Java和MySQL是两块东西,而我们的对象封装是在Java里面学的.封装成resultMap显然实现了对对象的封装,而sql语句起别名的方式总觉得差点儿意思.所以就没写.

但是刚刚问了助教老师,突然明白.两种方式其实本质是相同的,不过就是一个写了一个resultMap,到插入语句执行的时候其实跟起别名的方式没什么区别.只是起别名的方式直接就起了别名.而resultMap是先写了一下,然后运行的时候其实是一样的.就是一个是显式封装,一个是隐式封装而已.

4.ResultMap和ResultType的差别?

我的答案:(满分10分,得分7分)

当实体类中的属性名和数据库表中的字段名一致的时候,可以使用ResultMap,也可以使用ResultType.

当实体类中的属性名和数据库表中的字段名有不一致的地方的时候,只能使用ResultMap.

当有扩展属性的时候,也只能使用ResultMap

答案解析:

两者都是表示查询结果集与java对象之间的一种关系,处理查询结果映射到java对象.

resultMap:表示将查询结果集中的列一一映射到bean对象的各个属性.

ResultType:表示的是bean中的对象类,此时可以省略掉resultMap标签的映射,但是必须保证查询结果集中的属性和bean对象类中的属性是一一对应的,此时大小写不敏感,但是有限制.

个人批注:emm,虽然知道是怎么回事儿吧,但是自个儿写就是写不出来,啧啧啧,多看看吧!

5.JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?

我的答案:(满分10分,得分10分)

1.JDBC编程会提高程序的耦合性

2.JDBC编程会提高代码的重复性

3.JDBC编程不利于事务控制

4.将数据库查询语句跟Java代码写在一起,程序的可读性差

5.不便于维护

MyBatis设计好了一个框架,将数据库查询语句与Java代码分开.写在一个xml文件中,提供了一个mapper层去实现对数据库的增删改查.便于维护和修改.提高了程序可读性,并且提供了事务控制的方法.

答案解析:

1.数据库链接创建,释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题.

解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接

2.Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码

解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离.

3.向sql语句传参麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应.

解决:Mybatis自动将java对象映射至sql语句.

4.对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象(---POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称---)解析比较方便.

解决:Mybatis自动将sql执行结果映射至java对象.

个人批注:emmm,这个答案也太长了,不过理解起来倒是不困难,我虽然写的比较宽泛,老师也给了满分,还可以吧.就是答案的第一个到底是连接还是链接啊,有没有区别,可惜助教老师已经走咯,明天再问吧!

6.常用的动态sql语句标签有哪些?

我的答案:(满分10分,得分8分)

1.<select></select>

2.<delete></delete>

3.<update></update>

4.<insert></insert>

答案解析:

if,choose,when,otherwise,trim,set,where,foreach

个人批注:这个题我真的无语了,我翻来覆去的看了好几遍,除了第一题写的是SQL,这个写的是小写的sql,完全没区别好吧.但是觉得老师怎么会出两个重复的题呢,答案肯定不一样,所以瞎写了一个......,其实跟第一题就是一样,虽然我写风马牛不相及,但老师给了满分.估计都给了满分,啧啧啧.

7.什么是Maven本地仓库?Maven到底有哪些仓库?它们有什么关系?

我的答案:(满分10分,得分8分)

maven的本地仓库:存储在本地磁盘上的仓库,默认路径在c盘,可以修改

maven的中央仓库:存储在服务器上,所有仓库中的文件都来源于此,是最核心的仓库

私服:一些公司内部的仓库

私服与本地仓库中的文件都来自中央仓库

加载某个依赖的时候,会先从本地仓库中寻找,本地仓库没有,会从私服寻找,私服没有,会去中央仓库下载

答案解析:

本地仓库路径配置(????这什么鬼)

所以本地仓库就是相当于加了一次呢jar包缓存,先到这里来查,如果这里查不到,那么就去私服上找,如果私服也找不到,那么去中央仓库去找,找到jar后,会把jar的信息同步到私服和本地仓库中.

私服,就是公司内部局域网的一台服务器而已.

中央仓库:该仓库存储了互联网上的jar,由Maven团队俩维护.

个人批注:这个题我答的还行,我只能说理解万岁了.不过有一些小细节没有理解到位.多看看吧.

8.maven项目中servlet和jsp的依赖范围是哪个?它有什么作用?

我的答案:(满分10分,得分0分)

servlet和jsp的依赖范围都是compile

它的作用是指,servlet和jsp在编译时需要,运行时不需要,因为服务器中有servlet和jsp

答案解析:

provided:编译期有效,运行期不需要提供,不会打入包中。

个人批注:刚看到这个题,愣是没想起来这东西还有依赖范围??????黑人问号脸!懵逼了一下,反应过来是scope,复习的时候,主要看了mybatis的内容(虽然也没记住多少),maven粗略的过了一下.这个题我记得老师讲过,但是只记得是编译时需要,运行时不需要.忘了scope对应的那个值了.在苦痛与挣扎中,我成功的选择了错误答案.唉,是我菜,是我菜.但是老师给0分,也太无情了吧,唉~.蓝瘦,香菇!

1.Maven坐标是那三个要素

我的答案:(满分10分,得分10分)

1.groupId 组Id

2.name 项目名称

3.version 版本号

答案解析:

groupID,artifactId,version

个人批注:一看到这个题,我内心就在想,这个我知道我知道我知道,然后死活想不起来中间那个是什么.考完试再看,唉,是我英语烂,当时看着不认识,也没在意.现在我记住你了!

10.Mybatis使用mapper接口开发,需要遵循的一些约束条件

我的答案:(满分10分,得分10分)

1.命名空间namespace的值必须是mapper接口的全路径名

2.增删改查方法的id必须是mapper接口中对应的方法名

答案解析:

(全限定名有绝对路径的意思,比如一个文件file的存放路径,其绝对路径可能是/usr/local/sbin/file; 这个名词也用在其他地方,比如Java类包的定名:com.linux.struct.sort.bubblesort,从最原始最上层的地方援引到具体的对象,这就是全限定名了)

1.映射文件的namespace为mapper接口的全限定名

2.SQL语句的id为接口中的方法名

3.parameterType的类型与接口中方法的参数类型一致

4.resultType/resultMap的类型与接口中方法的返回值类型一致

个人批注:这个我没写全,但是老师给了满分,我感觉被可怜了怎么办,唉!

本次考试总结:

我这次考的真垃圾!

首先呢,这个老师讲课节奏我不是很适应,就是感觉很慢,虽然各处都讲的很细,但是就是感觉好像没有重点的感觉.

其次呢,这一周晚上写代码的时候总是出现一大堆错误,我感觉我都有点儿学懵了.

最后呢,就是我高估了自个儿的记忆力,我以为我可以,然后我不可以,还是得多看笔记,多复习,多理解啊.

还有就是突然明白了每周考试的意义,我以前就觉得吧,考的分数高才是最好的,(当然现在也觉得挺好哈哈哈),但是呢还要多一个点,就是考的好不好相当于一个检测,帮助你查看你对知识的理解是不是透彻,以及一些理解不到位的地方.出错越多,才能学越多.学的越多,不会的也就越多.加油咯!

 

发布了100 篇原创文章 · 获赞 7 · 访问量 7580

猜你喜欢

转载自blog.csdn.net/qq_40245464/article/details/103648430