zoukankan      html  css  js  c++  java
  • Mybatis的传参

    最近重新温习了遍Mybatis ,觉得还是汇总一下比较好,方便自己以后的快速开发

    最终要的一点事,自己写的话,记忆更加深刻;

    首先自己先写了个静态块,防止代码冗余:

    private static SqlSession session;
        static{
            SqlSessionFactory factory = MybatisUtils.getFactory();
            /**
             * 映射sql的标识字符串
             * com.yc.mybatis.onetoone.classMapper是classMapper.xml文件中mapper标签的namespace属性值
             * getCalss是select标签的id属性值,通过select标签的id属性值就可以找到要执行的sql语句
             */
            session = factory.openSession(true);
        }

    First:

    常规类型 传单个参数:

    //传单个参数 (数字类型)
        @Test
        public void test1(){
            String statement = "com.yc.mybatis.test.classMapper.getClass1";
            Classes c = session.selectOne(statement,2);
            System.out.println( c);
            session.close();
        }
        
        //传单个参数(字符类型)
        @Test 
        public void test10(){
            String statement = "com.yc.mybatis.test.classMapper.getClass3";
            Classes c = session.selectOne(statement,"ruanjian1");
            System.out.println( c);
            session.close();
        }

    xml 

    <select id="getClass" parameterType="int" resultMap="getClassMap">
            select * from class c, teacher t  where c.teacher_id = t.t_id and c.teacher_id=#{id}
        </select>
    
    <select id="getClass3" parameterType="string" resultMap="getClassMap">
            select * from class c, teacher t  where c.teacher_id = t.t_id   and c.c_name=#{name}
        </select>

    Map传参 适用于单个参数

    @Test
        public void test11(){
            String statement="com.yc.mybatis.test.classMapper.getClass1";
            Map<Object, Object> c=session.selectMap(statement, 1,"id");
            System.out.println(c);
        }

    xml

    <select id="getClass1" parameterType="int" resultMap="getClassMap">
            select * from class where c_id=#{id}
        </select>

    Map传参 多个参数(也适用于单个参数)

    @Test
        public void test2(){
            List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
            Map<String, Object> map=new HashMap<String, Object>();
            map.put("id", 1);
            map.put("name", "ruanjian1");
            String statement="com.yc.mybatis.test.classMapper.getClass2";
            list=session.selectList(statement,map);
            System.out.println(list);
        }

    xml

    <select id="getClass2" parameterType="hashmap" resultMap="getClassMap">
            select * from class c, teacher t  where c.teacher_id = t.t_id and c.teacher_id=#{id}  and c.c_name=#{name}
        </select>

    以对象的形式传参

    @Test
        public void test3(){
            Classes c=new Classes();
            c.setName("ruanjian1");
            String statement="com.yc.mybatis.test.classMapper.getClass44";
            List<Object> list=session.selectList(statement,c);
            System.out.println(list);
        }

    xml

    <select id="getClass44" parameterType="com.yc.bean.Classes" resultMap="getClassMap">
            select * from class c, teacher t  where c.teacher_id = t.t_id   and c.c_name=#{name}
        </select>

    Second

        对于foreach 你可以传递一个List实例或者数组作为参数对象传给MyBatis。当你这么做的时候,MyBatis会自动将它包装在一个Map中,用名称作为键。List实例将会以“list”作为键,而数组实例将会以“array”作为键。

    用list传单个参数变量

    @Test
        public void test5(){
            String statement = "com.yc.mybatis.test.classMapper.getClass5";
            List<Integer> list=new ArrayList<Integer>();
            list.add(1);
            list.add(2);
            list.add(3);
            List<Object> c = session.selectList(statement,list);
            for(Object o:c){
                System.out.println( o);
            }
            session.close();
        }

    xml

    <!-- 
            item: 表示集合中每一个元素进行迭代时的别名
            index: 指定一个名字,用于表示在迭代过程中,每次迭代到的位置;
                         在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。
            open: 表示该语句以什么开始,
            separator: 表示在每次进行迭代之间以什么符号作为分隔符,
            close: 表示以什么结束
         -->
        <select id="getClass5" parameterType="list" resultMap="getClassMap">
            select * from class c,teacher t where c.teacher_id=t.t_id and t.t_id in
            <foreach collection="list" item="item" index="index"
                open="(" close=")" separator=",">
                #{item}
            </foreach>
        </select>

    用List传数组形式

    @Test
        public void test6(){
            String statement = "com.yc.mybatis.test.classMapper.getClass6";
            Integer[] ids={2,3,5};
            List<Object> c = session.selectList(statement,ids);
            for(Object o:c){
                System.out.println( o);
            }
            session.close();
        }

    xml

    <select id="getClass6" parameterType="list" resultMap="getClassMap">
            select * from class c,teacher t where c.teacher_id=t.t_id and t.t_id in
            <foreach collection="array" item="item" index="index"
                open="(" close=")" separator=",">
                #{item}
            </foreach>
        </select>

    用List传map形式

        @Test
        public void test7(){
            String statement = "com.yc.mybatis.test.classMapper.getClass7";
            List<Integer> list=new ArrayList<Integer>();
            list.add(1);
            list.add(2);
            list.add(3);
            Map<String,Object> map=new HashMap<String,Object>();
            map.put("ids", list);
            map.put("name", "ruanjian1");
            List<Object> c = session.selectList(statement,map);
            for(Object o:c){
                System.out.println( o);
            }
            session.close();
        }
        

    xml

    <select id="getClass7" parameterType="list" resultMap="getClassMap">
            select * from class c,teacher t where c.teacher_id=t.t_id and  c.c_name=#{name} and t.t_id in
            <foreach collection="ids" item="item" index="index"
                open="(" close=")" separator=",">
                #{item}
            </foreach>
        </select>
        

     代码分享链接:http://pan.baidu.com/s/1gfkLFCf

  • 相关阅读:
    Tool工具页面代码
    Tool工具生成代码数据库Model生成代码
    类别切换 分页
    ASP.NET AJAX无刷新验证用户名
    VSS的配置和使用
    js 常用方法大全
    灵异——1995年北京330路公交车失踪案
    C#用HttpWebRequest通过代理服务器验证后抓取网页内容 。。。。。
    win2003远程 客户端无法连接到远程计算机。
    .net中点击button按钮显示下一条记录(上一条 下一条)
  • 原文地址:https://www.cnblogs.com/yaobolove/p/6269845.html
Copyright © 2011-2022 走看看