mybatis foreach map_MyBatis 示例-传递多个参数
映射器的主要元素:本章介绍 select 元素中传递多个参数的处理方式。测试类:com.yjw.demo.MulParametersTest使用 Map 传递参数(不建议使用)使用 MyBatis 提供的 Map 接口作为参数来实现。StudentDao/**StudentMapper.xml<!-- 使用 Map 传递参数 -->这个方法虽然简单,但是有一个弊端:这样设置的参数使..
映射器的主要元素:
本章介绍 select 元素中传递多个参数的处理方式。
测试类:com.yjw.demo.MulParametersTest
使用 Map 传递参数(不建议使用)
使用 MyBatis 提供的 Map 接口作为参数来实现。
StudentDao
/**
StudentMapper.xml
<!-- 使用 Map 传递参数 -->
这个方法虽然简单,但是有一个弊端:这样设置的参数使用 Map,而 Map 需要键值对应,由于业务关联性不强,造成代码可读性低。
使用注解方式传递参数(参数少时可以使用)
使用 MyBatis 的参数注解 @Param(org.apache.ibatis.annotations.Param)来实现想要的功能。
StudentDao
/**
StudentMapper.xml
把映射器的 XML 修改为无需定义参数类型。
<!-- 使用注解方式传递参数 -->
当我们把参数传递给后台的时候,通过 @Param 提供的名称 MyBatis 就会知道 #{name} 代表 name参数,参数的可读性大大提高了。但是这回引起另一个麻烦,一条 SQL 拥有 10 个参数的查询,如果我们都使用 @Param 方式,那么参数将十分复杂,可读性依旧不高,不过 MyBatis 为我们提供了 JavaBean 定义参数的方式来解决这个问题。
使用 JavaBean 传递参数
在参数过多的情况下,MyBatis 允许组织一个 JavaBean,通过简单的 setter 和 getter 方法设置参数,这样就可以提高我们的可读性。
首先,定义一个 StudentQuery 的 JavaBean
public
StudentDao
/**
StudentMapper.xml
<!-- 根据条件获取学生信息-->
总结
下面对各种方式加以总结,以利于我们在实际操作中的应用。
- 使用 Map 传递参数。因为 Map 导致业务可读性的丧失,从而导致后续扩展和维护的困难,我们应该在实际的应用中果断废弃这样的传递参数的方式。
- 使用 @Param 注解传递多个参数,这种方式的使用受到参数个数(n)的影响。当 n<= 5 时,它是最佳的传参方式,它比用 JavaBean 更好,因为它更加直观;当 n>5 时,多个参数将给调用带来困难。
- 当参数个数多于5个时,建议使用 JavaBean 方式。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)