使用map代替实体类传递参数

这篇博客探讨了在MyBatis中使用实体类和Map作为参数传递的两种常见方式。作者指出,使用Map传递参数虽然在SQL编写时更加灵活,但实体类能更好地反映对象关系,减少出错概率。示例展示了如何在接口、XML配置和测试代码中分别实现这两种方法,并指出了在不同场景下选择合适参数类型的重要性。
摘要由CSDN通过智能技术生成

这是传统的传递参数方法,传递的是实体类 。

sql语句中属性要和User中一一对应,比较繁琐易出错。

  1. 接口
  int addUser(User user);
  1. XML
    <insert id="addUser"  parameterType="com.pjx.pojo.User" >
        insert into user (id,name,pwd) values (#{id},#{name},#{pwd});
    </insert>`
  1. Test
    @Test
    public void addUser(){
        SqlSession session = MybatisUtils.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.addUser(new User(6,"胡","26")));
        session.commit();
        session.close();
    }

因此工作中常用的传递参数使用map

  1. 接口
int addUser2(Map<String,Object> map);
  1. XML
<insert id="addUser2"  parameterType="map" >
        insert into user (id,name,pwd) values (#{Userid},#{Username},#{Userpwd});
    </insert>
  1. Test
     public void addUser2(){
        SqlSession session = MybatisUtils.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        
        Map<String,Object>  map = new HashMap<String,Object>();
        map.put("Userid",5);
        map.put("Username","王五");
        map.put("Userpwd","5555555");
        mapper.addUser2(map);
        session.commit();
        
        session.close();
    }

只用map键值对来传递参数名称可随意命名,相比较于实体类做参数简单方便。

Map传递参数,直接在sql中取出对应的key — parameterType=“map”
对象传递参数,直接在sql中取对象的属性 —
parameterType=“Object”
只有一个基本类型参数的情况下,可以直接在SQL中取到 — 单个参数可以省略parameter
多个参数用Map,或者注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值