Mybatis入参与返回值类型

mapper接口入参
入参设置方式:
1.单独的参数与对象均直接按默认属性名匹配 (得有对应get、set方法)
2.@param 注解,注解名称代表参数对象
3.
package com.Dao;


import com.person.People;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

//不同参数配置
public interface Pojo2Parament {
    //自定义对象
    public int firstInsert(People people);
    //Map集合
    public int secondInsert(Map<String,Object> map);
    //基本数据类型
    public int thirdInsert(String name,String sex);
    //注解设置参数
    public int AnonationInsert(@Param("one") String a, @Param("two") String b);
}

mapper.xml参数设置与匹配规则

规则简述

parameterType:入参类型,自定义参数一定要写具体类路径

取值

  • sql中参数匹配用#{pojo.properties} (用到预编译,取出的值视为普通字符串)
  • 如果是${pojo.properties} 会参与sql编译,无预编译,可能造成sql注入问题
  • #{param1}, #{param2}或者#{arg0},#{arg1}
获取入参的内容都是通过get方法进行获取
插入数据时要指定jdbcType类型:mybatis自动将java类型转为jdbcType,但是如果数据为null,不指定的话就不知道转为什么类型,就会报错
 
 

入参为对象

 <insert id="firstInsert" parameterType="com.person.People"><!--参数为自定义类型的需要声明参数类型-->

        <!--
        参数是People对象
        name,sex都是People中的属性名,不能自己随便定义
         直接接收传入的People对象,按对应get+此处参数名(不区分大小写)作为调用的接口中的get方法的方法名来获取值并按名称将值放入对应的预编译中
        默认增长的主键如不指定,可以直接写上列名,不用从People出调用get方法来获取值-->
        
        insert into pojo
        values (id, #{name}, #{sex})
    </insert>

 

 

入参为基本数据类型

 
    <!--    参数是基本数据类型-->
    <insert id="thirdInsert">
        <!--
            预编译参数设置为
            #{param1}, #{param2}或者#{arg0},#{arg1},
                适用于多个参数(基本数据类型,这种可以直接用作预编译参数的)
            arg从0开始,param从1开始-->
            <!--参数列表多参,不按顺序,而是按名称对应的话,使用@param注解-->
        insert into pojo values (id, #{param1}, #{param2})
    </insert>

 

入参为Map

机制为getKey()

 <insert id="secondInsert">
        <!--
           参数name,sex都是map中的key名,机制是取得map中设置的键值对的值
          如果没对上,则getKey(key)返回来的是null,存入预编译处
          参数类型为Map,不用写paramentType=""这个声明
        -->
        
        insert into pojo
        values (id, #{name}, #{sex})
    </insert>

 

入参已用@param注解指定名称

   <insert id="AnonationInsert">
    <!--参数类型为注解配置,也不需要声明参数类型-->
    <!--必须是注解中设置的参数名称-->
        insert into pojo values (id,#{one},#{two})
    </insert>

 

 

 

 

 

 

 

 
 
 
 
posted on 2023-07-23 19:11  or追梦者  阅读(132)  评论(0编辑  收藏  举报