luckylbl

Mybatis和MyBatis-Plus

Mybatis是什么?

基于 XML 或注解方式实现数据库操作,需手动编写 SQL 语句。
MyBatis,功能较为基础,需手写大量 SQL 完成功能

MyBatis-Plus是什么?

在 MyBatis 基础上封装,通过增强后的简化 API 进行开发。
提供条件构造器、代码生成器、分页插件、性能分析拦截器等额外功能。

#{}和${}的区别是什么?

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

Mybatis 是如何进行分页的?分页插件的原理是什么?

Mybatis 使用 RowBounds 对象进行分页,分页插件的基本原理是使用 Mybatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 sql,然后重写 sql,根据 dialect 方言,添加对应的物理分页语句和物理分页参数

Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?

  1. if 是为了判断传入的值是否符合某种规则,比如是否不为空.
  2. where 标签可以用来做动态拼接查询条件,当和if 标签配合的时候,不用显示的声明类型where 1 = 1 这种无用的条件
  3. foreach 标签可以把传入的集合对象进行遍历,然后把每一项的内容作为参数传到sql 语句中.
  4. include 可以把大量的重复代码整理起来,当使用的时候直接include即可,减少重复代码的编写;
  5. 适用于更新中,当匹配某个条件后,才会对该字段进行跟新操作

mybatis常用的Mapper.xml里边的查询标签有哪些?

image

resultMap和resultType的区别是什么?

ResultType和ResultMap都是执行查询语句时返回的结果集
resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用

简述一下Mybatis 的编程步骤

A.创建 SqlSessionFactory
B.通过 SqlSessionFactory 创建 SqlSession
C.通过 sqlsession 执行数据库操作
D.调用 session.commit()提交事务
E.调用 session.close()关闭会话

posted on 2025-12-17 14:38  lubingliang  阅读(3)  评论(0)    收藏  举报

导航