mybatis中mapper传多个入参

有三种方式

1、使用占位符#{0},#{1}....对应顺序就是参数的顺序

#方法签名
List<TbItem> selectByPage(int page, int rows);

#sql语句
<select id="selectByPage" resultMap="BaseResultMap">
    SELECT
    <include refid="Base_Column_List" />
    from tb_item LIMIT #{0} , #{1}
  </select>

2、使用map封装入参

#生成map入参
public List<TbItem> getItemByPage(int page , int rows){
        Map paramMap = new HashMap();
        paramMap.put("page",page);
        paramMap.put("rows" , rows);
        List<TbItem> tbItems = tbItemMapper.selectByPage(paramMap);
        return tbItems;
    }

#sql
<select id="selectByPage" resultMap="BaseResultMap">
    SELECT
    <include refid="Base_Column_List" />
    from tb_item LIMIT #{page} , #{rows}
  </select>

3、使用@Param

#mapper中接口的签名
List<TbItem> selectByPage(@Param("page") int page , @Param("rows") int rows);

#sql
<select id="selectByPage" resultMap="BaseResultMap">
    SELECT
    <include refid="Base_Column_List" />
    from tb_item LIMIT #{page} , #{rows}
  </select>

原文地址:https://www.cnblogs.com/tianphone/p/10945152.html

时间: 2024-11-05 02:19:22

mybatis中mapper传多个入参的相关文章

Mybatis调用PostgreSQL存储过程实现数组入参传递

注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 1 如上所示,参数是一个int数组,Mybatis提

MyBatis 中 Mapper 接口的使用原理

MyBatis 中 Mapper 接口的使用原理 MyBatis 3 推荐使用 Mapper 接口的方式来执行 xml 配置中的 SQL,用起来很方便,也很灵活.在方便之余,想了解一下这是如何实现的,之前也大致知道是通过 JDK 的动态代理做到的,但这次想知道细节. 东西越多就越复杂,所以就以一个简单的仅依赖 MyBatis 3.4.0 的 CRUD 来逐步了解 Mapper 接口的调用. 通常是通过 xml 配置文件来创建SqlSessionFactory对象,然后再获取SqlSession对

Mybatis中mapper.xml中的模糊查询

Mybatis中mapper.xml中的模糊查询 <!-- 方法一: 直接使用 % 拼接字符串 注意:此处不能写成 "%#{name}%" ,#{name}就成了字符串的一部分, 会发生这样一个异常: The error occurred while setting parameters, 应该写成: "%"#{name}"%",即#{name}是一个整体,前后加上% --> <if test="name != nul

Mybatis 中在传参时,${} 和#{} 的区别

介绍 MyBatis中使用parameterType向SQL语句传参,parameterType后的类型可以是基本类型int,String,HashMap和java自定义类型. 在SQL中引用这些参数的时候,可以使用两种方式#{parameterName}或者${parameterName}. #{} #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号. 例如:order by #{parameterName} //或取Map中的value#{Key}也是一样操作. 假设传入参数是“

Mybatis中#{}和${}传参的区别及#和$的区别小结

最近在用mybatis,之前用过ibatis,总体来说差不多,不过还是遇到了不少问题,再次记录下, 比如说用#{},和 ${}传参的区别, 使用#传入参数是,sql语句解析是会加上"",比如 select * from table where name = #{name} ,传入的name为小李,那么最后打印出来的就是 select * from table where name = '小李',就是会当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,如果

mybatis 中mapper 的namespace有什么用

原文:http://zhidao.baidu.com/link?url=ovFuTn7-02s7Qd40BOnwHImuPxNg8tXJF3nrx1SSngNY5e0CaSP1E4C9E5J6Xv5fI9P_dTMqHeBRGOID9bk9IcY1o9h6O21l6rHRAwj_Km3 ----------------------------------------------------------------------------------------------------------

关于使用mybatis中mapper instrances,通过session另一种操作方式

1 String resource = "mybatis-config.xml"; 2 InputStream inputStream = null; 3 try { 4 // 获取SqlSessionFactory 5 inputStream = Resources.getResourceAsStream(resource); 6 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream)

MyBatis中Mapper配置常见问题(持续更新)

入参为List时,foreach标签中collection属性值固定为"list"(list存放在map中作为入参时,collection应为key值): <foreach item="item" collection="list" open="(" separator="," close=")"> #{item, jdbcType=VARCHAR, javaType=str

关于Mybatis中Mapper是使用XML还是注解的一些思考

XML 据说可以灵活的进行注解,但是修改以后还是要重新发布程序.当然,你可以说,在Tomcat中改了,然后热加载了,不就可以了.可是一般情况下都是几台,十几台服务器.都是用发布系统,持续集成的方式部署.这点灵活性也就没什么意义了.当然,一定要说XML支持好,这点我不否认.然而在注解中支持了大部分功能,如果实在复杂一点的SQL可以使用<script>方式或者使用Provider也行. 那再说,ResultMap支持的不好,但从3.某个版本,支持使用id,这样也可以在一定程度上进行复用了. 如果再