码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SSM复习面试题


    目录

    • SSM
      • Mybatis
        • Map
        • 核心配置文件
        • SqlSession
        • ResultMap
        • RowBounds分页
        • Mybatis详细执行流程
        • ResultMap
          • 多对一(多名学生对应一名老师)
          • 一对多(一个老师对应多么学生)
        • Mybatis缓存
        • 动态SQL
      • Spring
        • 控制反转(IOC)
          • IOC创建对象的方式
          • DI依赖注入
          • 注解代替Bean对象创建和依赖注入
        • Bean的自动装配(getBean)
        • 面向切面编程(AOP)
      • SpringMVC
        • SpringMVC的执行流程
        • @RequestParam

    SSM

    Mybatis

    Map

    • 执行的sql需要的参数很多,前端传递后端,后端接收,之后在方法中封装为一个Map对象,最后.xml文件中通过Map对象中的key来取值

    核心配置文件

    • 引入连接数据库的配置文件
    • 开启日志
    • 开启二级缓存(之后需要在.xml配置文件中的命名空间进行配置)
    • 绑定注册XxMapper.xml配置文件(三种方式)

    SqlSession

    • SqlSessionFactoryBuilder
    • SqlSessionFactory
    • SqlSession(一级缓存,作用范围有限,而且线程不安全使用完之后需要立即关闭)

    ResultMap

    • 问题引入:解决实体类属性名和对应的数据表字段名不一致的问题
    • 解决方式:去别名(通过sql语句的as关键字)、resultMap结果集映射

    RowBounds分页

    • 不需要导入任何依赖,只需要new一个对象设置相应参数即可

    Mybatis详细执行流程

    • 调用Resources的静态方法来加载Mybatis的核心配置文件:mybatis-config.xml

    • 实例化SqlSessionFactoryBuilder来解析配置文件流,获取文件的配置信息,创建SqlSessionFactory工厂实例

    • 创建Transactional事务管理器和executor执行器

    • 通过调用SqlSessionFactory接口对象中的openSesson方法获取SqlSession对象

    • 调用SqlSession的getMapper方法获取业务接口对象

    • 调用业务接口对象中的方法进行CRUD

    • 关闭SqlSession

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GGWGNsa3-1666268778695)(…/Mybatis/Mybatis执行过程/执行流程解析.png)]

    ResultMap

    多对一(多名学生对应一名老师)
    • 按照结果嵌套
    • 按照查询嵌套
    一对多(一个老师对应多么学生)
    • 按照结果嵌套
    • 按照查询嵌套

    Mybatis缓存

    • 一级缓存:SqlSession,作用范围有限,与数据库同一会话期间查询的数据会放到一级缓存中,而且SqlSession不安全,需要及时关闭(注意:一级缓存是默认开启的,相当于一个Map)
    • 二级缓存:需要在Mybatis的核心配置文件中打开,之后需要在每个需要开启缓存的.xml文件中开启(一个XxMapper.xml配置文件一个二级缓存,namespace级别)

    动态SQL

    Spring

    控制反转(IOC)

    IOC创建对象的方式
    • 无参构造(默认)
    • 有参构造(结合.xml配置文件)
    DI依赖注入

    为创建的对象注入属性值

    • set方式注入(结合.xml配置文件)
    • 拓展注入(c、p命名空间,结合.xml配置文件)
    注解代替Bean对象创建和依赖注入
    • @Component
    • @Value

    Bean的自动装配(getBean)

    • @Autowired注解:先byType,后byName
    • @Resource注解:先byName,后byType

    面向切面编程(AOP)

    • 静态代理(租户-中介-房东)

    SpringMVC

    SpringMVC的执行流程

    • 用户在前端发送请求
    • SpringMVC的核心DispatcherServlet前端控制器,拦截用户发送的请求进行处理
    • 前端控制器根据拦截地请求通过处理器映射器来匹配对应的处理器Handler
    • 找到对应的处理器之后将相关信息返回给前端控制器
    • 前端控制器再通过处理器适配器根据特定规则来执行处理器中的控制方法,访问数据库,返回模型数据
    • 将模型数据返回给前端控制器,前端控制器再根据试图解析器对模型数据进行解析,将解析视图结果返回给前端控制器
    • 前端控制器根据返回结果调用相应视图返回给前端

    @RequestParam

    • 解决前端向后端提交的参数与后端方法接收的参数不一致的问题
  • 相关阅读:
    Java Math.tan()/Math.tanh()具有什么功能呢?
    Android 10 如何在通知栏下拉状态栏会暂停第三方应用播放视频
    Express操作MongoDB【一.Express框架通过Mongoose模块操作MongoDB数据库;二.在接口中间件中使用Mongoose模块】
    【牛客-剑指offer-数据结构篇】JZ52 两个链表的第一个公共节点 两种思路 Java实现
    PBA.客户需求分析 & 需求管理
    SpringCloud 在云计算 SaaS 中的实战经验分享
    服务器是什么?它是用来干什么的?
    进程管理之wait和waitpid
    Kotlin 中let 、run 、with、apply、also的用法与区别
    PMP每日一练 | 考试不迷路-9.20(包含敏捷+多选)
  • 原文地址:https://blog.csdn.net/qq_48575500/article/details/127434428
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号