mapper.xml传参及其使用


mapper.xml传参及其使用

@Param(“name”):用来给xml准确获取参数使用

一、mapper.xml传参.

1.传多个参数

mapper层方法:
List<Files> test(String name ,Integer size);

//xml:#{0}代表接收的是 dao 层中的第一个参数,#{1}代表 dao 层中第二
//参数,更多参数一致往后加即可
<select id="test" resulttype="files">
	select * from ss_files where name = #{0} and size=#{1}
</select>


//带注释的方式
List<Files> test(@Param(value="name") String name ,@Param(value="size") Integer size);

//xml:#{0}代表接收的是 dao 层中的第一个参数,#{1}代表 dao 层中第二
//参数,更多参数一致往后加即可
<select id="test" resulttype="files">
	select * from ss_files where name = #{0} and size=#{1}
</select>

2.键值对传参

Service:
    Map paramMap=new hashMap();
    paramMap.put(“name ”, value);
    paramMap.put(“size”,value);
    
mapper层方法:
List<Files> test(Map paramMap);
//直接通过属性名获取值
mapper.xml:
<select id=”test” resulttype=”files”>
		select * from ss_files where name = #{name } and size=#{size}
</select>

//使用注释
mapper层方法:
List<Files> test(@Param(value="paramMap") Map paramMap);
//通过.点属性名的方式获取值
mapper.xml:
<select id=”test” resulttype=”files”>
		select * from ss_files where name = #{paramMap.name } and size=#{paramMap.size}
		  <if test="paramMap.size!=''">
                <![CDATA[and size> #{paramMap.size} ]]>
            </if>
</select>

3.传数组/集合

//<foreach > 循环: 循环体:item  序号:index 集合:collection  分割符:separator
//-----------------------------数组
mapper层方法:
List<Files> test(@Param("arrayIds") Integer[] arrayIds);
//通过.点属性名的方式获取值
mapper.xml:
<select id=”test” resulttype=”files” parameterType="Integer[]">
		select * from ss_files where
	 <if test="arrayIds!=null and arrayIds.length >0 ">
            <foreach collection="arrayIds" open=" and id in(" close=")" item="item" separator=",">
                #{item}
            </foreach>
        </if>
</select>

List<Files> test(@Param("listInt") List<Integer> listInt);
//通过.点属性名的方式获取值
mapper.xml:
<select id=”test” resulttype=”files”>
		select * from ss_files where
	  <if test="listInt!= null and listInt.size()>0">
  and ps.material_code in(
  <foreach item="item" index="index" collection="listInt" separator=",">
    #{item}
  </foreach>
  )
  </if>
</select>
//-----------------------------集合

4.传对象参数

mapper层方法:
List<Files> test(Files file);
//直接通过属性名获取值
mapper.xml:
<select id=”test” resulttype=”files”>
		select * from ss_files where name = #{name } and size=#{size}
</select>

//使用注释
mapper层方法:
List<Files> test(@Param(value="file") Files file);
//通过.点属性名的方式获取值
mapper.xml:
<select id=”test” resulttype=”files”>
		select * from ss_files where name = #{file.name } and size=#{file.size}
		  <if test="file.size!=''">
                <![CDATA[and size> #{file.size} ]]>
            </if>
</select>

5.同时传多个参数和对象

//使用注释
mapper层方法:
List<Files> test(@Param(value="file") Files file,@Param(value="size") Integer size);
//通过.点属性名的方式获取值
mapper.xml:
<select id=”test” resulttype=”files”>
		select * from ss_files where name = #{file.name } and size=#{size}
		  <if test="file.size!=''">
                <![CDATA[and size> #{size} ]]>
            </if>
</select>

二、mapper.xml部分参数作用

1.resultMap和 resultType的区别:

两者都是表示查询结果集与java对象之间的一种关系,处理查询结果集,映射到java对象。

resultMap:将查询结果集中的列一一映射到bean对象的各个属性,映射的查询结果集中的列标签可以根据需要灵活变化。

resultType :的是bean中的对象类,必须保证查询结果集中的属性 和 bean对象类中的属性是一一对应,大小写不敏感,但是有限制。

2.parameterMap(不推荐) & parameterType

parameterMap和resultMap类似,表示将查询结果集中列值的类型一一映射到java对象属性的类型上,在开发过程中不推荐这种方式。
### 回答1: mapper.javamapper.xml是MyBatis框架中的两个重要文件。 mapper.java是一个Java接口,用于定义数据库操作的方法。在mapper.java中,我们可以定义增删改查等操作的方法,并且可以通过注解或XML文件来映射SQL语句。 mapper.xml是一个XML文件,用于定义SQL语句和参数映射。在mapper.xml中,我们可以定义SQL语句,以及SQL语句中的参数和返回值的映射关系。同时,我们也可以在mapper.xml中定义一些复杂的SQL语句,如多表查询、分页查询等。 在MyBatis框架中,mapper.javamapper.xml是一一对应的,即每个mapper.java对应一个mapper.xml文件。这种设计可以使代码更加清晰,易于维护。 ### 回答2: mapper.javamapper.xml都是MyBatis框架中的重要组成部分。其中mapper.java是MyBatis框架中定义DAO的接口,而mapper.xml是DAO接口的具体实现。 mapper.java是DAO层的接口,定义了基本的业务操作方法,例如查询、插入、更新、删除等。它主要由两部分组成:一是声明DAO接口的名称和方法,二是声明DAO接口方法的参数和返回值类型。 mapper.xml则是为DAO接口提供具体的实现。mapper.xml中定义了SQL语句,用于访问数据库。它包含SQL语句、参数映射、结果映射等信息。在MyBatis中,mapper.xml文件中的SQL语句是可以动态生成的,这使得MyBatis易于开发。 映射器的使用可以实现业务逻辑与数据访问之间的解耦。它们提供了一个清晰的接口,使开发人员能够快速实现数据访问逻辑。在使用MyBatis框架时,mapper.javamapper.xml通常是组合起来使用的,其中mapper.java提供的接口方法将会调用mapper.xml中定义的SQL语句来实现具体业务逻辑。这种实现方式非常灵活,并且易于维护。 ### 回答3: Mapper.javaMapper.xml是MyBatis框架描述SQL语句和Java类之间映射关系的两种方式。 Mapper.java使用Java代码来描述SQL语句和对应的参数、返回值类型。Mapper.java中的方法对应SQL语句,参数是该语句需要传递的参数,返回值是SQL语句执行结果。Mapper.java可以使得编写Java程序更加直观,同时也可以静态类型检查,减少代码错误。 Mapper.xml则是使用XML文件来描述SQL语句和Java类之间的映射关系。Mapper.xml中包含了SQL语句、参数类型、返回值类型等信息,而且还可以使用一些特殊标签来处理SQL语句的动态条件、循环等逻辑。Mapper.xml可以使得SQL语句的编写更加灵活,而且可以方便地对SQL语句进行管理和调试。 在实际使用中,通常建议使用Mapper.xml描述复杂的SQL语句逻辑,而使用Mapper.java来描述简单的SQL语句。同时,Mapper.javaMapper.xml并不是互斥的,可以同时使用,也可以根据具体情况只使用其中一种。无论是使用Mapper.java还是Mapper.xml,都可以通过MyBatis框架来解析映射描述文件,并根据映射关系来执行SQL语句。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值