Mybatis_08_使用Map给Mybatis传值

使用Map给Mybatis传值

  • 什么时候使用parameterType="java.util.Map" 进行传值?

    • javabean不够用的情况下,我们可以使用map传值。

    • 一般情况下都是一个表对应一个javabean,两张表两个javabean。

    • 但是有这样一种情况,一些值是A表中的,另一些值是B表中的,在需要跨表的时候没有合适的javabean

  • 测试代码

  例子1:使用Map集合查询数据

       import junit.framework.TestCase;
       import org.apache.ibatis.session.SqlSession;
       import org.junit.Test;

       import java.util.HashMap;
       import java.util.Iterator;
       import java.util.List;
       import java.util.Map;

       public class test{
           @Test
           public void test (){
               SqlSession sqlSession=null;
               try{
                   //获取SqlSession对象
                   sqlSession=MaybatisTest01.getSqlSession();

                   //执行sql 找出research部门的岗位是manager的员工信息
                   String dname="research";
                   String job="manager";
                   Map<String,String> map=new HashMap<String, String>();
                   map.put("dname",dname);
                   map.put("job",job);
                   List<EmpInfo> empInfoList=sqlSession.selectList("getByDnameAndJob",map);

                   //输出信息
                   Iterator iterator=empInfoList.iterator();
                   while(iterator.hasNext()){
                       System.out.println(iterator.next());
                   }

                   //提交事务
                    sqlSession.commit();
               }catch(Exception e){
                   if(sqlSession!=null){
                       sqlSession.rollback();
                   }
               }finally {
                   if(sqlSession!=null){
                       sqlSession.close();
                   }
               }
           }
       }



  SqlMapping .xml


       <mapper namespace="test">
           <select id="getByDnameAndJob" parameterType="map" resultType="EmpInfo">
               select
                   e.*
               from
                  emp e
               join
                  dept d
               on
                  e.deptno=d.deptno
               where
                  d.dname=#{dname}
               and
                  e.job=#{job}

           </select>
       </mapper>



  例子二 :使用Map集合插入数据
 

       public class test {
       @Test
       public void test() {
           SqlSession sqlSession = null;
           try {
               sqlSession =MybatisTest.getSqlSession();
               Map<String, String> userMap = new HashMap<String, String>();
               userMap.put("userName", "王世杰");
               userMap.put("userEmail", "29547822@qq.com");
               userMap.put("userPwd", "123456");

               int count = sqlSession.insert("save", userMap);
               System.out.println(count);
               sqlSession.commit();

           }catch (Exception e) {

               if (sqlSession != null) {
                   sqlSession.rollback();
               }
           } finally {
               if (sqlSession != null) {
                   sqlSession.close();

               }
           }
       }
    }


    * SqlMappering

       - parameterType="java.util.Map"
       - parameterType="java.util.HashMap"
       - parameterType="Map"
       - parameterType="map"
      <mapper namespace="test">
       <insert id="save" parameterType="java.util.Map">
           insert into t_userInfo
                   (username,email,userpwd)
           values
                 (#{userName},#{userEmail},#{userPwd});
       </insert>
   </mapper>
posted @ 2021-04-28 14:57  失昼  阅读(257)  评论(0)    收藏  举报