Mybatis中值传递的三种方式

1.前言

本案例中,所用的的数据表,bean,Mybatis数据库配置,可以参考:https://blog.csdn.net/qq_32224047/article/details/107165157

2.值的传递 - Map传值

可以通过对象 获取 Map传递值,在配置文件中通过 #{} 或 ${}进行应用
userMapper.xml中的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.wyy.mapper.UserMapper">

    <select id="selc01" resultType="cn.wyy.domain.User">
        select * from user where age between #{min} and #{max};
    </select>

</mapper>

测试类

    @Test
    public void test01() throws Exception {
        //3.执行sql
        Map<String,Integer> map = new HashMap<String,Integer>();
        map.put("min",20);
        map.put("max",30);
        List<User> list = session.selectList("cn.wyy.mapper.UserMapper.selc01",map);
        System.out.println(list);
    }

测试结果:

 

3. 值的传递 - 对象传值

可以通过对象 获取 Map传递值,在配置文件中通过 #{} 或 ${}进行应用

在UserMapper.xml中配置:

    <insert id="inset01">
        insert into user values (#{id},#{name},#{age});
    </insert>

测试类 ,事务未设置自动提交,所以需要手动提交

    @Test
    public void test02(){
        User user = new User(9,"xx",99);
        //3.执行sql
        session.insert("cn.wyy.mapper.UserMapper.inset01",user);
        session.commit();
    }

测试结果

数据插入成功

4.值的传递 - 单值传

如果程序中只有一个参数需要传递给sql,则不需要封装到bean或map中,可以直接传 入。在sql中可以使用任意名称获取到这个参数,虽然名称可以任意,但通常仍然使用该 属性的名称,以便于阅读。

(如果只传递一个值,用map或者bean 那么比较浪费,如果在没有歧义(有歧义的情况,换成Map就行)等问题的情况下采用单值传递,单值传递--mybatis将传递的字符串参数当做一个bean传递)

    <select id="selc02" resultType="cn.wyy.domain.User">
        select * from user where id = #{id};
    </select>

测试类;

    @Test
    public void test03(){
        //3.执行sql
        User user = session.selectOne("cn.wyy.mapper.UserMapper.selc02",2);
        System.out.println(user);
    }

测试结果如下

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值