Mybatis传递多个参数


目前本人在学习Mybatis,记录一下相关知识。


   MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。在该mapper.xml中有select,update,insert,delete常用的数据库操作。你可以设置传人参数类型(parameterType),和输出结果类型(resultType,resultMap)。

问题来了,之前用Hibernate的时候,基本上你想传多少个参数,直接dao层接收多少个参数就行,直接传。MyBatis接收单个参数时很好办,直接将parameterType设为你要传的参数类型就可以。但是如何传多个参数呢?

有两种方法(目前知道两种,初学者,求轻喷):

1,通过javabean传入多个参数:

我的mapper.xml是这样的:

<!-- sql片段 -->
	<sql id="sql_where_dymatic">
	<if test="username!=null">
	 AND username=#{username}
	</if>
	<if test="address!=null">
	AND address=#{address}
	</if>
	</sql>
	<!-- sql综合查询 -->
	<select id="findDynamic" resultType="User" parameterType="User">
	SELECT * FROM user
	<where>
	<include refid="sql_where_dymatic"></include>
	</where>
	</select>
dao层是这样:

public List<User> findDynamic(User user);
只要在控制层new一个user,接着set相应属性值就行了。

2,通过map传入:

同理mapper.xml

<!-- sql片段 -->
	<sql id="sql_where_dymatic">
	<if test="username!=null">
	 AND username=#{username}
	</if>
	<if test="address!=null">
	AND address=#{address}
	</if>
	</sql>
	<!-- sql综合查询 -->
	<select id="findDynamic" resultType="User" parameterType="map">
	SELECT * FROM user
	<where>
	<include refid="sql_where_dymatic"></include>
	</where>
	</select>

接着dao层:

public List<User> findDynamic(Map paramMap);


最后在控制层将你要传递的参数以键值对的形式放入paramMap中:

@Test
	public void testFindDynamic()throws Exception{
		
		SqlSession session=getSession();
		UserMapper userMapper=session.getMapper(UserMapper.class);
		Map<String,String> paramMap=new HashMap<String, String>();
		paramMap.put("username", "lensssss");
		paramMap.put("address", "taizhouchina");
		List<User> userList=userMapper.findDynamic(paramMap);
		session.close();
	}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值