MyBatis

本文详细讲解了MyBatis中#{和}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#{}和${}

项目#{}${}
执行顺序动态解析 -> 预编译 -> 执行动态解析 -> 编译 -> 执行
变量替换DBMS外DBMS内
加单引号自动加不加
防止sql注入可以不行
假设传入参数为1select * from t_user where uid = #{uid}
select * from t_user where uid= ?
select * from t_user where uid= '1’
select * from t_user where uid = #{uid}
select * from t_user where uid= '1’
select * from t_user where uid= ‘1’
单个参数可任意1、使用MyBatis默认值value,即${value}
2、使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param("")
多个参数1、使用MyBatis 默认值 arg0、arg1、arg2 … 或 param1、param2、param3 …
2、使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param("")
1、使用MyBatis 默认值 arg0、arg1、arg2 … 或 param1、param2、param3 …
2、使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param("")

注:@Param("") 是 @Param(value="") 的简写

建议:
(1)不论是单个参数还是多多个参数,一律使用@Param("")。
(2)尽量用#{}。
(3)表名做参数,必须用 。 ( 4 ) o r d e r b y 时 , 必 须 用 {}。 (4)order by时,必须用 4orderby{}。
(5)使用 时 要 注 意 何 时 加 或 不 加 单 引 号 , 即 {}时要注意何时加或不加单引号,即 {} 和 ‘${}’。

MyBatis工作原理

1、读取MyBatis配置文件:mybatis-config.xml为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,例如数据库连接信息。
2、加载映射文件:映射文件即sql映射文件,该文件配置了操作数据库的sql语句,需要在mybatis配置文件mybatis-config.xml中加载。该文件可以加载多个映射文件,每个文件对应数据库中的一张表。
3、构造会话工厂:通过mybatis的环境等配置文件信息构建会话工厂sqlsessionfactory。
4、构建会话对象:由会话工厂构建sqlsession对象,该对象中包含了执行sql语句的所有方法。
5、Executor执行器:mybatis底层定义了一个executor接口来操作数据库,它将根据sqlsession传递的参数动态生成需要执行的sql语句,同时负责插叙缓存的维护。
6、MappedStatement对象:在Executor接口执行的方法中有一个mappedstatement类型的参数,该参数是对映射信息的封装,用于存储要映射的sql语句id、参数等信息。
7、输入参数映射:输入参数类型可以是map、list等集合类型,也可以是基本数据类型和pojo类型,输入参数映射过程类似于jdbc对preparedstatement对象设置参数的过程。
8、输出结果映射:输出结果类型可以是map、list等集合类型,也可以是基本数据类型和pojo类型。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汉东哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值