SSM面试题

框架面试题

一、Mybatis

1、谈谈你对框架的理解,框架有什么好处?

1、啥是框架
  框架就是一个架子,表演节目,舞台已经搭建好,表演什么节目,看自己的需求了。
  框架是一个半成品,对于Java语言来说,框架就是封装了别人的代码。在框架的基础上我们在进一步开发,拿来主义。(你想啊,在二阶段我们都手动去用request.getParameter()获取参数、在dao手动去写sql,不管啥业务,这些东西都是一样的,框架就将这些给你封装好啦)
2、解决的问题
	解决的是技术整合问题。软件开发环境和规模都很大,不可能任何一个项目的代码都从零开始,此时就需要一个非常优秀的框架把基础技术整合完毕,我们在他的基础上进一步开发。提高性能,易扩展,易维护,最终提高整个团队的开发效率
3、怎么用框架呢?
  (1) 导入相关坐标(jar包)
  (2) 框架运行细节定义,编写配置文件(每个框架都有自己的配置文件呀)
  (3) 调用框架中的API

2、Mybatis框架的好处

1、原先使用jdbc时
   每次CRUD都要写那六大步骤,太冗余了吧
而且:
  (1)频繁连接,释放数据库资源,降低系统性能
  (2)SQL语句硬编码,难以维护(sql都写到.java里了)
  (3)参数和占位符对应问题
  (4)结果集解析复杂,列名硬编码
2、mybatis框架
   是一个very优秀的持久层(dao)框架,对JDBC进行了封装,使得开发者只需要关注Sql语句(业务)本身即可,无需开发者处理加载驱动、获取连接、创建Statement等繁琐的过程。
   实现了ORM思想

3、如何理解ORM思想呢?

对象关系映射

    将数据库中的关系数据表映射为JAVA中的对象,把对数据表的操作转换为对对象的操作,实现面向对象编程。因此ORM的目的是使得开发人员以面向对象的思想来操作数据库。
    Mybatis框架是一个半自动的ORM持久层框架,也可以在Java中实现类似 insert(User)的操作最终操作数据库,但是需要我们自己写Sql语句。Mybatis是目前比较流行的Dao层框架。

4、Mybatis的编程步骤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FzpbauxZ-1639100484220)(img/2.png)]

//1、加载核心配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//2、创建构建器  
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//3、构建SqlSession工厂
SqlSessionFactory sqlSessionFactory = builder.build(inputStream);
//4、生产SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//5、执行业务
 User user = sqlSession.selectOne("test.queryUserById",2);
    System.out.println(user);
//6、释放资源
 sqlSession.close();

5、#{} 和 ${} 的区别

 1. #{}是预编译处理,${}是字符串替换。
 2. Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
 3. Mybatis在处理${}时,就是把${}替换成变量的值,相当于字符串拼接
 4. 使用#{}可以有效的防止SQL注入,提高系统安全性。

6、动态代理开发方式的好处以及规范是什么

   定义一个Mapper接口,这个接口其实和我们UserDao接口是一样的,从Mybatis框架中拿到一个代理对象(代理的是这个Mapper接口),通过代理对象调用接口当中的方法完成业务。

四大规范:
1、sql映射文件的namespace必须和mapper接口的全限定类名保持一致
2、mapper接口的接口方法名必须和xml中的sql语句id保持一致
3、mapper接口的接口方法形参类型必须和sql语句的输入参数类型保持一致
4、mapper接口的接口方法返回类型必须和sql语句的resultType保持一致

7、mybatis的配置文件有哪些?作用是啥

  • SqlMapperConfig.xml

    主配置文件

1、enviroments配置数据源环境:
	数据源、事务管理器的配置
2、全局typeAliases配置:
	别名配置
3、mappers:加载指定的配置文件
    <mappers>
        <mapper resource="mapper/UserMapper.xml" />
        <mapper class="com.ujiuye.mapper.UserMapper">mapper>
        <package name="com.ujiuye.mapper">package>
    mappers>	
  • 写sql的配置文件

    比如: