SpringBoot整合Mybatis传参的几种方式

转自https://blog.csdn.net/irelia_/article/details/82347564

在SpringBoot整合Mybatis中,传递多个参数的方式和Spring整合Mybatis略微有点不同,下面主要总结三种常用的方式

一、顺序传参法
Mapper层:
传入需要的参数

public interface GoodsMapper {

public Goods selectBy(String name,int num);
}
1
2
3
4
Mapper.xml:
*使用这种方式,在SpringBoot中,参数占位符用#{arg0},#{arg1},#{arg…}

总结:这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。

二、@Param注解传参法
Mapper层:

public interface GoodsMapper {

public Goods selectBy(@Param("name")String name,@Param("num")int num);

}
1
2
3
4
5
Mapper.xml:
*#{}里面的名称对应的是注解@Param括号里面修饰的名称。

<select id="selectBy" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from goods
where good_name=#{name} and good_num=#{num}
</select>
1
2
3
4
5
6
总结:这种方法在参数不多的情况还是比较直观的,推荐使用。

三、使用Map封装参数
Mapper层:
将要传入的多个参数放到Map集合

public interface GoodsMapper {

public Goods selectBy(Map map);
}
1
2
3
4
Mapper.xml:
*#{}里面的名称对应的是Map里面的key名称

<select id="selectBy" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from goods
where good_name=#{name} and good_num=#{num}
</select>
1
2
3
4
5
6
总结:这种方法适合传递多个参数,且参数易变能灵活传递的情况。

Service层:
带上要传入的参数

public interface GoodsService {

public Goods selectBy(String name,int num);
}
1
2
3
4
Service接口实现层:
封装Map集合:

@Override
public Goods selectBy(String name,int num) {
Map<String, String> map = new HashMap<String, String>();
map.put("name",name);
map.put("num",num+"");
return GoodsMapper.selectBy(map);
}
1
2
3
4
5
6
7
Controller层:
@RequestMapping("/selectBy.do")
@ResponseBody
public Goods selectBy(String name,int num) {

return goodsService.selectBy(name,num);
}
1

版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/ffaiss/p/10923467.html

时间: 2024-10-12 11:03:19

SpringBoot整合Mybatis传参的几种方式的相关文章

mybatis传参的几种方式

1,@Param @参考文章 @Select("select s_id id,s_name name,class_id classid from student where  s_name= #{aaaa} and class_id = #{bbbb}")  public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id); @Select(....)注解的作

Vue路由传参的几种方式

原 Vue路由传参的几种方式 2018年07月28日 23:52:40 广积粮缓称王 阅读数 12613 前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效.传参方式可以划分为params传参和query传参,params传参又可以分为url中显示参数和不显示参数两种方式.具体区分和使用后续分析. 参考官网:https://router.vuejs.org/zh/guide/essentials/navigation.html params传参(url中显示参数)

传参的两种方式

SQL语句的执行不可缺少参数的传递,传递参数直接拼接SQL语句不可避免会遇到SQL注入问题,会造成很严重的系统安全问题,所以一般会使用 SetParameterValue("@abc", abc),拼接一个可变的参数集合parms ,在SQl语句中使用如下 <dataCommand name="SubmitProductEntryAudit" database="Write" commandType="Text">

senchaTouch 给组件传参的两种方式

在senchaTouch 页面跳转中,有时我们需要将其前一个页面的相关参数传入到新的页面或者新的控件中,这是我们该如何传递参数进去呢,一下有两种方式: var arg;//定义将要 传入的参数 Ext.define('MyApp.view.Init',{ extend:'Ext.Container', id:'chat_more_btm', xtype:'init', config:{ layout:'fit', myarg:arg//把将要传入的参数映射到一个属性上面 }, initializ

页面传参的几种方式

页面之间传值的几种方法 1.Get方式 发送页代码:Response.Redirect("WebFormA2.aspx?name=" + TextBox1.Text); 接收页代码: this.TextBox1.Text = Request["name"];            //this.TextBox1.Text=Request.Params["name"];            //this.TextBox1.Text=Request

3.struts2接收页面传参的三种方式

Struts2通过拦截器机制封装了三种接收页面参数的方式: 1.属性驱动 2.模型驱动(有两种) Domain ModelDriven 1.属性驱动:这种方式比较简单,只要你直接在页面定义变量并且符合以下两个规则,就会自动接收值. 规则1:你变量的名字和页面的name属性一致 规则2:生成对应的get set方式 Action写法: public class ParamAction { private String username; private String password; publi

vue 路由跳转,路由传参的几种方式

1. router-link <router-link :to="{ path: 'yourPath', params: { name: 'name', dataObj: data }, query: { name: 'name', dataObj: data } }"> </router-link> 2. $router方式跳转 this.$router.push({ path: 'yourPath', query: { name: 'name', dataO

HttpClient 调用WebAPI时,传参的三种方式

public void Post() { //方法一,传json参数 var d = new { username = " ", password = " ", grant_type = "password", appcode = " ", companyid = " ", version = "1.0", }; var data = JsonConvert.SerializeObjec

SpringBoot 整合MyBatis案例详解

SpringBoot约定大于配置的特点,让框架的配置非常简洁,与传统的SSM框架相比,简化了大量的XML配置,使得程序员可以从繁琐的配置中脱离出来,将精力集中在业务代码层面,提高了开发效率,并且后期的维护成本也大大降低. 从源码中可以看到,每一个springboot集成的jar包也是一个maven的子module,springboot已经将相关依赖的jar包自动添加到工程中,不需要开发人员手动去添加了,这也是springboot能够简化配置的一个重要原因. 下面开始说明springboot是如何