一、Mybatis中保存一条记录,返回主键有哪些要求?【10分】
保存一条记录,返回主键有两种方法:保存记录时获取主键、保存记录后获取主键
Ⅰ、在保存记录时能够返回主键的关键所在:SQL标签中添加三个属性。即,
①【useGeneratedKeys】的值————>必须设置为【true】,否则无法获得主键id,
可以在【mybatis-config.xml】中设置:
②【keyProperty】————>设置为POJO对象的主键id【属性名称】
③【keyColumn】————>设置为数据库记录的主键id的【字段名称】
Ⅱ、在保存记录之后获取主键,用到了【selectKey】标签
select LAST_INSERT_ID() 或者 select @@identity 要求:
①【keyProperty】————>设置为POJO对象的主键id【属性名称】
②【keyColumn】————>设置为数据库记录的主键id的【字段名称】
③【resultType】————>设置为获取主键的SQL语句的返回值的【数据类型】
④【order】——————>设置获取主键的SQL语句在保存记录之前【BEFORE】还是之后【AFTER】执行
SQL语句有两种:
# 查询最后一次添加的SQL语句中的主键的值 select LAST_INSERT_ID(); select @@identity
二、请写出使用Mybatis的Mapper代理的步骤;dao有啥要求?映射文件有什么要求?【10分】
mapper:相当于Java里面的类
namespace:相当于Java里面的包名
使用Mapper代理的要求:
————> namespace:必须是Dao接口的包名+类名
————> sql标签中的id:必须和dao接口中的方法名一样,唯一标识,id不能重复
————> parameterType:必须和dao接口方法中的形参类型一样
————> resultType:必须和dao接口方法中的返回值类型一样
——————> 如果查询的是单条,那么返回值类型就是resultType;
——————> 如果查询的是多条,那么返回值的类型是List,List里面放的是resultType
Ⅰ、接口和Mapper文件必须在同一目录下
Ⅱ、mapper.xml中namespace指定为mapper接口的全限定名
Ⅲ、mapper.xml中statement的id就是mapper.java中方法名
Ⅳ、mapper.xml中statement的parameterType和mapper.java中方法输入参数类型一致
Ⅴ、mapper.xml中statement的resultType和mapper.java中方法返回值类型一致.
三、请写出Mybatis中映射文件的动态SQL语句常用的SQL标签有哪些?分别代表什么含义?【10分】 ——> 9分
where
if
when
otherwise
choose
set
sql
include
trim
foreach
test
四、Mybatis中实现一对多的关联关系的步骤有哪些?【10分】
Ⅰ、数据库两表关联字段
A表的主键列是B表的外键列,即,A表——>B表为一对多的关系
Ⅱ、映射文件中需要为两表的关联字段重新赋值
Ⅲ、Mapper文件需要在全局配置文件中配置,以便加载配置时知道Mapper文件的位置
五、Mybatis的分页有三种,分别是什么?【10分】——> 9分
Ⅰ、数组分页 ?
Ⅱ、SQL分页
mysql分页关键字 limit
postgresql分页关键字 offset
oracle 分页:三层rowNum 嵌套
分页必备的两个要素:总条数、每页多少条
Ⅲ、拦截器+插件配置分页
①、在【mybatis.cfg.xml】文件中配置插件;【注意插件配置的顺序】
②、在映射文件中,配置SQL语句
插件:pageHelper:Page page = pageHelper.startPage(a,b);
总条数:page.getTotal();
总页数:page.getPageSize();
每页条数:page.getPages();
page.getPageNum();
③、PageHelper插件分页查询的测试类及运行结果
Ⅳ、RowBounds分页
Mybatis自带的RowBounds分页的测试类及运行结果如下:
六、Spring中的IOC和DI分别代表什么含义,请解释一下?【10分】
IOC:【Inversion Of Controller】控制反转
将对象实例化的操作交给Spring IOC容器进行封装处理成一个个的Bean,通过反射的原理获得该对象 DI:【Dependency Injection】依赖注入
分为三大类:构造器赋值、读写器赋值、其他赋值。
构造器赋值:
①按照形参的下标索引值赋值 ②按照形参的数据类型赋值 ③按照形参的变量名赋值 读写器赋值:
①基本数据类型 ②引用数据类型
数组 List集合
Set集合 ③自定义引用类型
篮球 足球 羽毛球
篮球hobbyList 足球hobbyList 羽毛球hobbyList 篮球hobbySet 足球hobbySet 羽毛球hobbySet 篮球hobbyProperMap 足球hobbyProperMap 羽毛球hobbyProperMap
其他方法:
①、P ②、属性文件
七、Spring为指定的类常见的构造方法赋值有哪几种?推荐使用哪个?为什么?【10分】
Ⅰ、按照有参构造方法的形参的【下标索引值】进行赋值
缺点:如果形参数量相同,数据类型不同,不知道指定下标的形参的数据类型是什么,数据类型则会不匹配。
Ⅱ、按照有参构造方法的形参的【数据类型】进行赋值
缺点:如果数据类型相同的形参数量不唯一,不知道赋值给哪一个形参
Ⅲ、按照有参构造方法的形参的【名称】进行赋值 【推荐使用】
优点:因为属性名具有唯一性,所以按照属性名进行赋值,不易出错。
缺点:如果形参的数量较多,(指定的类的属性过多),赋值代码繁而冗杂。
八、SpringAOP是什么意思?它都包含哪些概念,写的越多越好。【10分】——> 9分
AOP:【Aspect Oriented Programming】 面向侧面编程
包含概念有:
Ⅰ、切面【Aspect】
Ⅱ、连接点【Join Point】
Ⅲ、通知【Advice】
Ⅳ、切入点【Pointcut】
Ⅴ、介绍【Introduction】
Ⅵ、目标对象【Target object】
Ⅶ、AOP代理【AOP proxy】
Ⅷ、织入【Weaving】
九、SpringMVC驱动赋值都有哪几类,分别是什么?【10分】——> 3分
基本数据类型
引用数据类型
自定义引用类型
十、请介绍一下代理模式?【10分】——> 3分
代理模式:可以实现委托类的要求
静态代理:维护性差,一个代理实现一个目标对象
动态代理:一个代理可以实现多个目标对象;写一个代理。谁用谁拿,返回对象即可。