游侠的博客 游侠的博客
首页
  • 论文笔记
  • 一些小知识点

    • pytorch、numpy、pandas函数简易解释
  • 《深度学习500问》
开发
技术
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Ranger

一名在校研究生
首页
  • 论文笔记
  • 一些小知识点

    • pytorch、numpy、pandas函数简易解释
  • 《深度学习500问》
开发
技术
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Vue

  • SpringBoot2

  • JavaWeb

  • SSM

    • Spring

    • Mybatis

      • 一、MyBatis详解
      • 二、搭建MyBatis
      • 三、MyBatis的增删改查
      • 四、核心配置文件详解
      • 五、MyBatis参数值获取
        • 5.1、单个字面量类型的参数
        • 5.2、多个字面量类型的参数
        • 5.3、map集合类型的参数
        • 5.4、实体类类型的参数
        • 5.5、使用@Param标识参数
      • 六、MyBatis的各种查询方式
      • 七、特殊SQL语句的执行
      • 八、自定义映射resultMap
      • 九、动态SQL
      • 十、MyBatis的缓存
      • 十一、MyBatis的逆向工程
      • 十二、分页插件
    • SpringMVC

    • SSM整合
  • SpringBoot3

  • 技术
  • SSM
  • Mybatis
yangzhixuan
2023-03-31
目录

五、MyBatis参数值获取

MyBatis获取参数值的两种方式:${}和#{}

${}的本质就是字符串拼接,#{}的本质就是占位符赋值

${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引

号;但是#{}使用占位符赋值的方式拼接sql(log4j打印出来的SQL语句在具体位置上显示?),此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号

使用#{}或${}获取参数值时,大括号中的内容与函数中的参数名不一定要一致,但最好还是与参数名保持一致

<!--User getUserByUsername(String username);-->
<select id="getUserByUsername" resultType="com.atguigu.mybatis.pojo.User">
    select * from t_user where username = #{user}
</select>
1
2
3
4

# 5.1、单个字面量类型的参数

若mapper接口中的方法参数为单个的字面量类型(所见即所得)

此时可以使用${}和#{}以任意的名称获取参数的值,注意${}需要手动加单引号

# 5.2、多个字面量类型的参数

若mapper接口中的方法参数为多个时,不能直接使用#{参数名}的方法去使用

此时MyBatis会自动将这些参数放在一个map集合中,以arg0,arg1...为键,以参数为值;以

param1,param2...为键,以参数为值;因此只需要通过${}和#{}访问map集合的键就可以获取相

对应的值,注意${}需要手动加单引号,例:

<!--User checkLogin(String username, String password);-->
<select id="checkLogin" resultType="com.atguigu.mybatis.pojo.User">
    select * from t_user where username = #{arg0} and password = #{arg1}
</select>
1
2
3
4

# 5.3、map集合类型的参数

若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合,将这些数据放在

map中

只需要通过${}和#{}访问map集合的键就可以获取相对应的值,不需要在前面加map.注意${}需要手动加单引号

<!--User checkLoginByMap(Map<String, Object> map);-->
<select id="checkLoginByMap" resultType="User">
    select * from t_user where username=#{username} and password=#{password}
</select>
1
2
3
4

# 5.4、实体类类型的参数

若mapper接口中的方法参数为实体类对象时

此时可以使用${}和#{},通过访问实体类对象中的属性名(get、set方法后面的那一段,遵循标准的话和成员变量的名称是一致的)获取属性值,注意${}需要手动加单引号

<!--void insertUser(User user);-->
<insert id="insertUser">
    insert into t_user values (null, #{username}, #{password}, #{age}, #{gender}, #{email})
</insert>
1
2
3
4

# 5.5、使用@Param标识参数

可以通过@Param注解标识mapper接口中的方法参数

此时,会将这些参数放在map集合中,以@Param注解的value属性值为键,以参数为值;以

param1,param2...为键,以参数为值;只需要通过${}和#{}访问map集合的键就可以获取相对应

的值,

注意${}需要手动加单引号

<!--User checkLoginByParam(@Param("username") String username, @Param("password") String password);-->
<select id="checkLoginByParam" resultType="com.atguigu.mybatis.pojo.User">
    select * from t_user where username = #{username} and password = #{password}
</select>
1
2
3
4
编辑 (opens new window)
上次更新: 2024/05/30, 07:49:34
四、核心配置文件详解
六、MyBatis的各种查询方式

← 四、核心配置文件详解 六、MyBatis的各种查询方式→

最近更新
01
tensor比较大小函数
05-30
02
Large Language Models can Deliver Accurate and Interpretable Time Series Anomaly Detection
05-27
03
半监督学习经典方法 Π-model、Mean Teacher
04-10
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Ranger | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式