面试专栏:Mybatis

一,$和#的区别

Mybatis中#$的区别主要在于数据处理方式和用途:

符号描述用途安全性
#使用PreparedStatement处理,参数值作为绑定变量的值传入通用查询、防止SQL注入较高
$直接替换SQL语句中的值,参数值直接拼接到SQL语句中动态表名、列名等场景,需谨慎使用较低

使用#可以有效防止SQL注入,而$则需要在可控的情况下谨慎使用。

二,Mybatis实现分页的方法

手动分页:在SQL查询中直接使用LIMITOFFSET子句进行分页。

拦截器SQL注入:

使用Mybatis拦截器实现分页通常涉及到创建一个自定义的拦截器来拦截SQL语句,并在SQL执行前对其进行修改,加入分页的相关逻辑。以下是基本的步骤:

  1. 创建拦截器:实现Mybatis的Interceptor接口。

  2. 拦截SQL操作:在intercept方法中,判断当前操作是否为查询操作。

  3. 添加分页逻辑:根据分页参数(如页码和每页大小),修改原始SQL语句,加入分页的SQL(如LIMITOFFSET)。

  4. 配置拦截器:在Mybatis配置文件中注册自定义拦截器。

这种方式允许在不修改原始查询逻辑的情况下,透明地添加分页功能。但实现起来相对复杂,需要考虑不同数据库的分页语法差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nathaniel333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值