MyBatis 多参数传递

MyBatis的mapper接口不需要自己实现,框架会自动帮我们实现,到时候直接调用就可以了。定义的mapper接口中的方法可以有多个参数 吗?答案是肯定。在Ibatis时代是自己通过代码实现如何调用xml中定义的statement,接受的参数只能是一个,所以处理的办法通常是用Map 的方式。当然这个也能使用在MyBatis上,不过MyBatis提供更加简单的方法。下面就通过例子来说明。

Mapper接口

public interface TestMapper {

	Object meth1(String para1, String para2);

	/**
	 * p1、p2可以是任何合法的java命名方式
	 * xml中可以根据此标示来获取到具体传入的值
	 */
	Object meth2(@Param("p1")String para1, @Param("p2")String para2);
}

mapper.xml

     <select id="meth1" resultType="int">
     	select count(*) from test
     	where col1 = #{0}
     	and clo2 = #{1}
     </select>

     <select id="meth2" resultType="int">
     	select count(*) from test
     	where col1 = #{p1}
     	and clo2 = #{p2}
     </select>

上述两种方法都行的通,上述statement中不需要指定parameterType。如果不使用 @Param注解方式,那么可以通过#{0}、#{1}的方式来获取参数的值,注意function中的第一个参数是0;使用了注解就按注解中定义的名字 来取。推荐使用注解的方式。在方法重构时,例如增加、减少或调整参数的顺序,如果使用非注解的方式,在修改xml时就显得比较麻烦,可能里面 的${0}、${1}、${2}都需要调整,而且不明确,特别是参数较多的情况下。

时间: 2024-11-16 03:44:28

MyBatis 多参数传递的相关文章

MyBatis多参数传递之注解方式示例--转

原文地址:http://legend2011.blog.51cto.com/3018495/1015003 若映射器中的方法只有一个参数,则在对应的SQL语句中,可以采用#{参数名}的方式来引用此参数,以前的例子多属于此类.但这种方法却不适用于需要传递多个参数的情况,今天就来介绍如何使用注解传递多个参数(示例源码下载地址:http://down.51cto.com/data/537051). 一.使用注解实现多参数传递 首先应引入“org.apache.ibatis.annotations.Pa

MyBatis:参数传递 [转]

一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean"> select t.* from tableName t where t.id= #{id} </select> 其中方法名和ID一致,

MyBatis MapperScannerConfigurer配置――MyBatis学习笔记之八

MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八 2012-09-02 20:01:42 标签:Spring MyBatis MapperScannerConfigurer bean默认命名 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://legend2011.blog.51cto.com/3018495/980150 在上一篇博文的示例中,我们在beans.xml中配置了stu

MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(二)

(本文示例工程源代码下载地址:http://down.51cto.com/data/1975295) 在上一篇博文的最后,介绍了使用@PostConstruct注解标注StudentDao的init方法,这样在Spring完成依赖注入后此方法即会被Spring调用,从而也就完成了studentMapper的初始化工作. 如果只有StudentDao一个DAO类,这样做当然没有问题.不过在实际应用中,必定存在多个DAO类.每个DAO类的初始化方法,除了传入的映射器接口类型(如StudentMapp

MyBatis关于Mapper配置文件知识集合

(1)MyBatis多参数传递之默认命名方式 对于映射器中的方法,MyBatis默认从左到右给方法的参数命名为param1.param2-,依次类推.我们可以无需借助注解,直接在SQL语句中使用这些默认名称. 首先去掉@Param注解的TeacherMapper.java如下所示(完整源码下载地址:http://down.51cto.com/data/539217): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package com.abc.map

mybatis增强

MyBatis SQL参数传递(掌握) SQL映射器Mapper接口(掌握)Myb atis批量操作(理解掌握) (多对一)关联映射(掌握) (一对多,多对多)集合映射 MyBatis原理回顾 S(spring)S(springmvc)M(mybatis)集成(掌握) MyBatis是一个ORM持久化框架,应用到系统持久层(Dao); 一个MyBatis的应用程序都以一个SqlSessionFactory对象(单例)的实例为核心 SqlSession对象完全包含以数据库为背景的所有执行SQL操作

从Mybatis中#和$的区别到SQL预编译

#和$的区别 Mybatis中参数传递可以通过#和$设置.它们的区别是什么呢? # Mybatis在解析SQL语句时,sql语句中的参数会被预编译为占位符问号? $ Mybatis在解析SQL语句时,SQL语句中的参数会被当做字符串拼接SQL. 使用#能够防止SQL注入攻击. 那么什么是预编译? 什么是预编译 通常,一条sql在db接收到最终执行完毕返回需要经历三个阶段: 词法和语义解析 优化sql语句,制定执行计划 执行并返回结果 但是如果同样一条SQL,如果只是参数值变了,不需要每次都语法语

Mybatis第三篇:参数解析

Mybatis的参数传递情况分为:一个参数.Map参数.javaBean参数.多个参数.Collection参数.List参数.Array数组参数. 一.一个参数 Dao层的接口方法中传入的参数只有一个,XML文件中的取值变量可以任意写(#{value}可以写任意值). <select id="getUserByName" parameterType="string" resultMap="BaseResultMap"> select

如何自学 Java 开发

如何自学 Java 开发? 568赞同反对,不会显示你的姓名 李艾米IT路上学习 568 人赞同 Java Web前端技术 HTML 入门视频课程 1 HTML 简介 2 HTML基本结构[ 3 HTML的BODY标签以及颜色的设定 4 HTML之br标签 5 HTML之p标签 6 HTML之pre标签. 7 HTML之center 8 HTML之引文标签 9 HTML之hr 10 HTML之address 11 HTML之meta 标签 12 HTML之特殊字符 13 HTML之注释 14 H