当前位置: 代码网 > it编程>编程语言>Java > MyBatis获取参数值的五种情况分析(推荐)

MyBatis获取参数值的五种情况分析(推荐)

2024年11月22日 Java 我要评论
mybatis获取参数值的两种方式:${}和#{}${}本质:字符串拼接#{}本质:占位符赋值mybatis获取参数值的各种情况:1. mapper接口方法的参数为单个的字面量类型:可以通过${}和#

mybatis获取参数值的两种方式:${}和#{}
${}本质:字符串拼接
#{}本质:占位符赋值

mybatis获取参数值的各种情况:

1. mapper接口方法的参数为单个的字面量类型:

可以通过${}和#{}以任意的名称获取参数值,但是需要注意${}的单引号问题

parametermapper接口:

user getuserbyusername(string username);

parametermapper.xml:

<select id="getuserbyusername" resulttype="user">
    <!-- select * from t_user where username = #{username};-->
    select * from t_user where username = '${username}';
</select>

parametermappertest:

@test
public void testgetuserbyusername() {
    sqlsession sqlsession = sqlsessionutils.getsqlsession();
    parametermapper mapper = sqlsession.getmapper(parametermapper.class);
    user user = mapper.getuserbyusername("admin");
    system.out.println(user);
}

2. mapper接口方法的参数为多个时:

此时mybatis会将这些参数放在一个map集合中,以两种方式进行存储

a>以arg0,arg1...为键,以参数为值

b>以param1,param2...为键,以参数为值

一次只需要通过#{}和${}以键的方式访问即可,但是需要注意${}的单引号问题

parametermapper接口:

user checklogin(string username, string password);

parametermapper.xml:

<select id="checklogin" resulttype="user">
    <!-- select * from t_user where username = '${arg0}' and password = '${arg1}';-->
    select * from t_user where username = #{arg0} and password = #{arg1};
</select>

parametermappertest:

@test
public void testchecklogin() {
    sqlsession sqlsession = sqlsessionutils.getsqlsession();
    parametermapper mapper = sqlsession.getmapper(parametermapper.class);
    user user = mapper.checklogin("admin", "123456");
    system.out.println(user);
}

3. 若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储:

只需要通过#{}和${}以键的方式访问值即可,但是需要注意${}的单引号问题

parametermapper接口:

user checkloginbymap(map<string, object> map);

parametermapper.xml:

<select id="checkloginbymap" resulttype="user">
    select *
    from t_user
    where username = #{username}
      and password = #{password};
</select>

parametermappertest:

@test
public void testcheckloginbymap() {
    sqlsession sqlsession = sqlsessionutils.getsqlsession();
    parametermapper mapper = sqlsession.getmapper(parametermapper.class);
    hashmap<string, object> map = new hashmap<>();
    map.put("username", "admin");
    map.put("password", "123456");
    user user = mapper.checkloginbymap(map);
    system.out.println(user);
}

4. mapper接口方法的参数是实体类类型的参数:

只需要通过#{}和${}以属性值的方式访问值即可,但是需要注意${}的单引号问题

parametermapper接口:

int insertuser(user user);

parametermapper.xml:

<insert id="insertuser">
    insert into t_user
    values (null, #{username}, #{password}, #{age}, #{sex}, #{email});
</insert>

parametermappertest:

@test
public void testinsertuser() {
    sqlsession sqlsession = sqlsessionutils.getsqlsession();
    parametermapper mapper = sqlsession.getmapper(parametermapper.class);
    int num = mapper.insertuser(new user(null, "李四", "789789", 25, "男", "456123@qq.com"));
    system.out.println(num);
}

5. 使用@param注解命名参数:

此时mybatis会将这些参数放在一个map集合中,以两种方式进行存储

a>以@param注解的值为键,以参数为值

b>以param1,param2...为键,以参数为值

因此只需要通过#{}和${}以键的方式访问值即可,但是需要注意${}的单引号问题

parametermapper接口:

user checkloginbyparam(@param("username") string username, @param("password") string password);

parametermapper.xml:

<!--user checkloginbyparam(@param("username") string username, @param("password") string password);-->
<select id="checkloginbyparam">
    select *
    from t_user
    where username = #{username}
      and password = #{password};
</select>

parametermappertest:

@test
public void testcheckloginbyparam() {
    sqlsession sqlsession = sqlsessionutils.getsqlsession();
    parametermapper mapper = sqlsession.getmapper(parametermapper.class);
    user user = mapper.checkloginbyparam("admin", "123456");
    system.out.println(user);
}

总结:

上面的五种情况想要记清楚还是比较难的,所以我们可以分为两种情况:

一种是在参数中加上@param

一种是使用属性值

到此这篇关于mybatis获取参数值的五种情况的文章就介绍到这了,更多相关mybatis获取参数值内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com