侧边栏壁纸
博主头像
黑色閃光w博主等级

行动起来,活在当下

  • 累计撰写 28 篇文章
  • 累计创建 14 个标签
  • 累计收到 152 条评论

目 录CONTENT

文章目录

MyBatista的四种入参方式

黑色閃光w
2023-06-25 / 3 评论 / 2 点赞 / 608 阅读 / 4772 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-09-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

当我们使用MyBatis进行开发的时候, 我们需要在xml文件里书写SQL语句, 由Mapper接口提供接口, SQL语句的是如何识别Mapper接口的参数是一件值得思考.

正文

按照参数出现的顺序入参

MyBatis会将传入接口的参数一map的形式保存并以arg0,arg1…为键,以参数为值.

Mapper接口

public interface UserMapper {
	User checkLogin(String username,String password);
}

Mapper映射文件

<select id="checkLogin" resultType="User">
    select * from user where username=#{param1}and password=#{param1}
</select>

按照Map集合类型入参

直接在Mapper接口中将参数声明为Map类型, MyBatis就会按照Map中的键进行寻找入参.

Mapper接口

public interface UserMapper {
//    验证登录(以map集合作为参数)
    User checkLoginByMap(Map<String,Object> map);
}

Mapper映射文件

<select id="checkLoginByMap" resultType="User">
    select * from user where username=#{username} and password=#{password}
</select>

按照@param注解声明入参

此时MyBatis会将这些参数放在map中,以两种方式进行存储

1:以@param注解的value属性值为键

2:以param1,param2…为键,以参数为值 此时可以通过#{}和${}访问实体类的属性名,就可以获取相应的属性值一定要注意${}的单引号问题

Mapper接口

public interface UserMapper {
//验证登录
    User checkLoginByParam(@Param("username") String username,@Param("password") String password);
}

Mapper映射文件

<select id="checkLoginByParam" resultType="User">
    select * from user where username=#{username} and password=#{password}
</select>

按照实体类类型入参

此时可以通过#{}和访问实体类的属性名,就可以获取相应的属性值一定要注意{}访问实体类的属性名,就可以获取相应的属性值一定要注意{}的单引号问题

Mapper接口

public interface UserMapper {
//    添加用户信息
    void insertUser(User user);
}

Mapper映射文件

<insert id="insertUser">
    insert into user values(null,#{username},#{password},#{age},#{gender},{email})
</insert>

结语

参考文档
Mybatis传入多个参数四种处理方式

2

评论区