• Java--MyBatis传入参数parameterType


    parameterType:MyBatis的传入参数

    一、参数类型主要分为两种

      (1)基本数据类型:int,string,long,Date

      (2)复杂数据类型:类和Map

    二、获取参数中的值

      (1)基本数据类型:#{参数} 获取参数中的值

      (2)复杂数据类型:#{属性名}  ,map中则是#{key}

    首先说说单参数基本数据类型,如:String,Long

    一、单参数

    1. //根据name查询
    2. public List<XXBean> getXXBeanList(String name);
    3. <select id="getXXBeanList" parameterType="java.lang.String" resultType="XXBean">
    4.   select * from User u where u.name = #{name}
    5. select>
    6. //根据主键id查询
    7. public List<XXBean> getXXBeanList(Long beanId);
    8. <select id="getXXBeanList" parameterType="java.lang.String" resultType="XXBean">
    9.   select * from User u where u.userId = #{beanId}
    10. select>

    其中方法名和ID一致,#{}中的参数名与方法中的参数名一致, 上面采用的是XXXBean,是采用的短名字,

    select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 别名 来补充

    二、多参数

    1、索引 #{index}

    1. public List<XXBean> getXXBeanList(String beanId, String name);
    2. <select id="getXXBeanList" resultType="XXBean">
    3.   select * from user u where u.userId = #{0} and name = #{1}
    4. select>

    由于是多参数,不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始

    #{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可

    2、Map封装多参数

    1. Map hashmap = new HashMap();
    2. params.put("userId", userId);
    3. params.put("userName", userName);
    4. public List<XXBean> getXXBeanList(HashMap hashmap);
    5. <select id="getXXBeanList" parameterType="hashmap" resultType="XXBean">
    6.   select * from user u where u.userId=#{userId} name = #{userName}
    7. select>

    其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个

    3、List封装in

    1. public List<XXBean> getXXBeanList(List<String> list);
    2. <select id="getXXBeanList" resultType="XXBean">
    3.   select * from user where userId in
    4.   <foreach item="userId" collection="array" open="(" separator="," close=")">
    5. #{userId}
    6. foreach>
    7. select>

    foreach 最后的效果是select 字段... from XX where id in ('1','2','3','4')

    4、注解方式

    1. public User getUser(@Param("userId")Long userId, @Param("name")String name);
    2. Mapper.xml配置:
    3. <select id="getUser" resultMap="com.xxx.xxx.User">
    4. SELECT * FROM user u
    5.     where u.userId=#{userId} and u.name=#{name}
    6. select>

    5、多类型参数

    selectList()只能传递一个参数,但实际所需参数既要包含String类型,又要包含List类型时的处理方法;将参数放入Map,再取出Map中的List遍历

    1. List list = new ArrayList();
    2. Map map2 = new HashMap();
    3. list.add("1");
    4. list.add("2");
    5. map2.put("list", list);
    6. map2.put("roleCode", "0101");

    mapper.xml

    1. <select id="getUser" parameterType="java.util.Map" resultMap="User">
    2.   select u,userId, u.name, u.code
    3. from user u
    4. left join role r on r.role_userId = u.userId
    5. WHERE r.code = #{roleCode}
    6. and r.roleId not in
    7. <foreach item="roleId" collection="array" open="(" separator="," close=")">
    8. #{roleId}
    9. foreach>
    10. select>

  • 相关阅读:
    中国之声广播在线收听,云听“正直播”在路上
    腾讯云容器镜像操作
    springboot-rabbitmq-reply 消息直接回复模式
    代码自动化审核操作详解(svnchecker+checkstyle)
    java 系统的一些基础知识
    计算机网络:数据链路层设备 网桥与交换机
    有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输人10个学
    八款流行无线黑客工具,非常实用
    Docker-持久化数据库(数据卷)
    Linux Shell相关记笔记
  • 原文地址:https://blog.csdn.net/MinggeQingchun/article/details/119393604