Mybatis万能Map

本文介绍了Mybatis中使用Map作为参数进行SQL操作的方法,包括直接通过Map键值获取参数、对象参数以及基本类型参数的使用场景,并给出了相关XML映射文件和测试类的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis万能Map

Map

sql中一些经常性的CRUD操作都需要传递参数,根据不同的需求传递的参数也不同,大致分三种:

  1. Map传递参数,直接在sql中取出key即可
    (parameterType=“map” 常用此方式
  2. 对象传递参数,直接在sql中取对象的属性即可(parameterType=“com.rjxy.mybatis.test.User”)
  3. 只有一个基本类型参数的情况下,可以直接在sql中取到(parameterType=“int”)

示例如下:
1.
userMapper.xml

<insert id="five" parameterType="map">
<!-- 如果实体类或数据库中的表的字段或者参数过多,应当考虑使用Map。如果字段过多,要想更改其中的某一个值则要连带全部的字段是很不便捷的,使用Map可以随意更改key的名字 -->
insert into users(id,age) values(#{userid},#{userage});
</insert>

测试类:

@Test
	public void insert() {
		//如果实体类或数据库中的表的字段或者参数过多,应当考虑使用Map,使用Map传递参数直接在sql中取出key即可,
		//如下所示Map集合可以指定所需字段,相比较对象传参的插入方法是要带上全部字段才可以完成最终目的,
		//如果字段过多,要想更改其中的某一个字段的值必须要连带全部的字段是很不便捷的,普通的方法使用对象传递参数直接在sql中取出对象的属性即可
		String statement="study.mybatis.userMapper"+".five";
		Map<String, Object> map=new HashMap<String, Object>();
		map.put("userid", 35);
		map.put("userage", 21);
		int b=(new MybatisUtils()).getSqlSession().insert(statement, map);
		System.out.println(b);
		(new MybatisUtils()).getSqlSession().close();
	}

运行结果(最后两行):
在这里插入图片描述

userMapper.xml

<insert id="two" parameterType="com.rjxy.mybatis.test.User">
insert into users values(#{id},#{name},#{age});
</insert>

测试类

@Test
	public void insertUser() {
		String statement="study.mybatis.userMapper"+".two";
		int a=(new MybatisUtils()).getSqlSession().insert(statement, new User(33,"AAA",22));
		System.out.println(a);
		(new MybatisUtils()).getSqlSession().close();
	}

运行结果(最后一行):
在这里插入图片描述

userMapper.xml

<select id="one" parameterType="int" resultType="com.rjxy.mybatis.test.User">
<!-- resultType返回一个结果,resultMap接收返回多个结果 -->
select * from users where age=#{age};
</select>

测试类:

@Test
	public void selectUser() {
		String statement="study.mybatis.userMapper"+".one";
		List<User> users=(new MybatisUtils()).getSqlSession().selectList(statement,21);
		System.out.println(users);
		(new MybatisUtils()).getSqlSession().close();
	}

多个参数用Map

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

章鱼NBA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值