Mybatis:使用map代替对象传值

本文介绍了在Mybatis中如何使用Map替代实体类进行参数传递。使用Map传值可以摆脱实体类属性与SQL参数名必须一致的约束,更加灵活。示例展示了插入和更新操作的XML映射文件及Java测试代码,Map的键值对应SQL语句中的字段名,使得字段个数和名称可以自由定制,只需确保数据库字段允许为空。
摘要由CSDN通过智能技术生成

Mybatis:使用map代替对象传值

在Mybatis中,实体类的属性需要与数据库字段一一映射;
使用对象传值时,
1. 1. 1. SQL语句#{}中的参数名需要与实体类属性名保持一致;
2. 2. 2. SQL语句中的字段个数需要与实体类的构造方法参数个数相同;
所以说用对象传值时有实体类的约束。

使用map传值,在SQL语句中可以自定义字段名,以及字段的个数
map传值通过键值对关联字段,就去除了实体类的约束;

字段个数设置有个前提:数据库中设置字段允许为空;

insert

<mapper namespace="com.tl.dao.UserMapper">
    <insert id="addUser" parameterType="map">
    insert into user(id,name) values (#{uid},#{pename});
    </insert>
</mapper>
public class Test {
    @org.junit.Test
        public void Test() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("uid",7);
        map.put("pename","唐僧");
        int i = mapper.addUser(map);
        System.out.println(i);
        sqlSession.commit();
        sqlSession.close();
    }
}

在这里插入图片描述
update

<?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="com.tl.dao.UserMapper">
    <update id="updateUser" parameterType="map">
    update user set name=#{pename} where id=#{uid};
    </update>
</mapper>
public class Test {
    @org.junit.Test
        public void Test() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("uid",7);
        map.put("pename","至尊宝");
        int i = mapper.updateUser(map);
        System.out.println(i);
        sqlSession.commit();
        sqlSession.close();
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值