• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
风拂晚柳
博客园    首页    新随笔    联系   管理    订阅  订阅

MyBatis探究-----传递参数详解

   1.单个参数

     mybatis不会做特殊处理,#{参数名/任意名}:取出参数值

     例如:接口中方法 public Employee getEmpById(String empId);

                XML中 <select id="getEmpById" resultType="com.mybatis.entity.Employee">

                                  select * from t_employee where empId=#{empId}

                            </select>

    注意:List集合或数组需@Param指定参数名

   2.多个参数   

2.1 不使用@Param  不推荐

    mybatis会做特殊处理,多个参数会被封装成 一个map

         key:param1...paramN,或者参数的索引也可以

         value:传入的参数值     

     #{key}取出对应的参数值 

    例如:接口中方法 public List<Employee> getEmpsByempNameAndSex(String empName,Integer empSex);

               XML中  <select id="getEmpsByempNameAndSex" resultType="com.mybatis.entity.Employee">

                                     select * from t_employee where empName=#{0} and empSex=#{1}
                            </select>

                            或者

                           <select id="getEmpsByempNameAndSex" resultType="com.mybatis.entity.Employee">

                                     select * from t_employee where empName=#{param1} and empSex=#{param2}
                           </select>

2.2 使用@Param

     明确指定封装参数时map的key,多个参数会被封装成 一个map

          key:使用@Param注解指定的值

          value:参数值

     #{指定的key}取出对应的参数值

     例如:接口中方法 public List<Employee> getEmpsByempNameAndSex(@Param("empName")String empName,@Param("empSex")Integer empSex);

                XML中 <select id="getEmpsByempNameAndSex" resultType="com.mybatis.entity.Employee">

                                  select * from t_employee where empName=#{empName} and empSex=#{empSex}

                           </select>

2.3 Map传参

     #{key}:取出map中对应的值

     例如:接口中方法 public List<Employee> getEmpsByempNameAndSex(Map<String, Object> map);

                XML中 <select id="getEmpsByempNameAndSex" resultType="com.mybatis.entity.Employee">

                                 select * from t_employee where empName=#{empName} and empSex=#{empSex}

                            </select>

                测试代码

                            Map<String, Object> map=new HashMap<>();

                            map.put("empName", "王昭君");

                            map.put("empSex", 0);

   3.Bean参数     

     如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo

     #{属性名}:取出传入的pojo的属性值

     例如:接口中方法 public Integer addEmployee(Employee employee);

                XML中 <insert id="addEmployee" parameterType="com.mybatis.entity.Employee">

                               insert into t_employee(empId,empName,empSex,empAge) values(#{empId},#{empName},#{empSex},#{empAge})

                            </insert>

posted @ 2019-03-25 14:04  风拂晚柳  阅读(179)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3