Mybatis常见知识点

Mybatis常见知识点

${}和#{}有什么区别

${}是简单的字符串替换,属于静态文本替换,并且并不是在预处理的时候进行替换,实在编译的时候进行替换,可能会存在sql注入的风险。替换后的值不会自动加上单引号。

{}是占位符,是在预编译的时候进行替换成?占位符,执行前才会把参数设置进去,相当于jdbc的PreparedStatement,替换后的变量会自动加上单引号,可以防止sql注入。

-- ${}
-- 替换前
select * from t_user where id = ${id}
-- 替换后
select * from t_user where id = 1
-- #{}
-- 替换前
select * from t_user where id = #{id}
-- 替换后
select * from t_user where id = ?
-- 执行时
select * from t_user where id = '1'

Mybatis常见的标签

Mybatis常见的标签有 <select></select><insert></insert><update></update><delete></delete><resultmap></resultmap><sql></sql><include></include><if></if><foreach></foreach><choose></choose><when></when><otherwise></otherwise><where></where><set></set>

Mybatis实体类属性名称和数据库表中字段名称不一致,解决方式

  1. 在sql查询语句中是 as将数据库字段名称定义为实体类属性名称,保持两者一直, as可以省略。
  2. 定义 <resultmap></resultmap>, sql查询语句设置resultType为对应的 <resultmap></resultmap><resultmap></resultmap>里面写实体类字段和数据库表中字段的映射关系。

Mybatis中分页的几种方式

  1. 直接传入分页参数,在sql中使用limit进行分页。例如:
select * from t_users limit 0, 10
  1. 使用Mybatis中的RowBounds进行分页

    RowBounds需要传入offset和limit,该方式会把数据全部查询出来,然后进行处理,将offset之前的数据全部跳过,去除offset和limit之间的数据,属于逻辑分页。

  2. 使用Mybatis的分页插件,例如PageHelper

    PageHelper属于是物理分页,会在sql后面添加limit。

  3. 使用Mybatis提供的拦截器,在拦截器中拦截准备执行的sql,之后重新构造sql。

Mybatis获取自动生成的主键

  1. 数据库主键是自动生成的,可以使用useGeneratedKeys和keyProerty获取主键值

  1. 使用selectKey标签中的 select LAST_INSERT_ID()获取主键

    keyProperty:是属性名 order:BEFORE、AFTER,BEFORE是先获取主键,再执行insert,AFTER是先执行insert,再获取主键。


    select REPLACE(UUID(), '-', '')

关注微信公众号「平哥技术站」, 每日更新,在手机上阅读所有教程,随时随地都能学习。

原文链接:https://monkey.blog.xpyvip.top/archives/mybatis-chang-jian-zhi-shi-dian

Original: https://www.cnblogs.com/aibianchengya/p/16830517.html
Author: 程序猿的代码
Title: Mybatis常见知识点

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/643335/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球