framwork学习笔记day03---动态sql操作

这篇博客详细介绍了MyBatis中的动态SQL操作,包括如何给SQL传参、输入映射(简单类型、零散简单类型、实体类型、Map)、输出映射(简单类型、实体类型、Map、List、ResultMap)、插入主键返回,以及动态SQL的各种标签(if、where、trim、set、choose、foreach)的使用,并给出了实际代码示例。
摘要由CSDN通过智能技术生成

给SQL传参

  • 概述
    • Mybatis会在运行过程中,把配置文件中的SQL语句里面的#{}转换为“?”占位符,发送给 数据库执行。
  • 需求
    • 根据账户模糊查询
  • 代码实现
<select id="selectUserLikeName1" parameterType="string" resultType="user">
    select *
    from tb_user
    where user_name like "%"#{
   userName}"%"
</select>

<select id="selectUserLikeName2" parameterType="string" resultType="user">
    select *
    from tb_user
    where user_name like "%${userName}%"
</select>

总结

  • #{}
    • 不能直接写到字符串中
    • 可以防止SQL注入漏洞
    • 不可以传入表名
  • ${}
    • 能直接写到字符串中
    • 不可以防止SQL注入漏洞
    • 可以传入表名

输入映射

概述

  • 输入映射,是在映射文件中通过parameterType指定输入参数的类型。从而将用户输入的内容赋值到SQL语句的占位符中。
  • 简单类型 : 包含一个值
    • 基本数据类型
    • 包装类
    • String
  • 复杂类型 : 包含多个值
    • javabean实体类
    • 集合
    • 数组

输入映射之简单类型

  • 概述
    • 输入一个简单类型的值
  • 需求
    • 根据id查询记录
  • 代码实现
<select id="selectUserById1" parameterType="int" resultType="user">
    select *
    from tb_user
    where user_id = #{userId}
</select>

<select id="selectUserById2"  resultType="user">
    select *
    from tb_user
    where user_id = #{userId}
</select>

输入映射之零散简单类型

  • 概述
    • 输入多个简单类型的值
  • 需求
    • 根据账户和密码查询记录
  • 代码实现
<select id="selectUserByNameAndPwd1" resultType="user">
    select *
    from tb_user
    where user_name = #{param1}
      and user_pwd = #{param2}
</select>


<select id="selectUserByNameAndPwd2" resultType="user">
    select *
    from tb_user
    where user_name = #{userName}
      and user_pwd = #{userPwd}
</select>
User selectUserByNameAndPwd1(String userName , String userPwd) throws Exception;


User selectUserByNameAndPwd2(@Param("userName") String userName , @Param("userPwd") String userPwd) throws Exception;

输入映射之实体类型

  • 概述
    • Mybatis会根据#{}中传入的数据,加工成getXxx()方法,通过反射在实体类对象中调用这个 方法,从而获取到对应的数据。填充到#{}这个位置。
  • 需求
<select id="selectUserByNameAndPwd3" parameterType="user" resultType="user">
    select *
    from tb_user
    where user_name = #{userName}
      and user_pwd = #{userPwd}
</select>

<select id="selectUserByNameAndPwd4"  resultType="user">
    select *
    from tb_user
    where user_name = #{userName}
      and user_pwd = #{userPwd}
</select>
  • 注意事项
    • #{userName}应该和getUserName()方法名一致
    • parameterType="user"可以省略

输入映射之Map

  • 概述
    • 如果要输入多个简单类型的值,同时也找不到合适的javabean来进行封装,使
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值