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>
作者: deity-night
出处: https://www.cnblogs.com/deity-night/
关于作者:码农
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(***@163.com)咨询.