zoukankan      html  css  js  c++  java
  • 8、mybatis学习——sqlmapper配置文件参数处理(单个参数,多个参数,命名参数)

    1、单个参数时

      

     此时sqlMapper中的配置

      

     或者

      

     都可以;因为参数只有一个,不会混乱,只有单个参数时红框中的取名可随意

    2、多个参数时

        mapper接口中的方法:

      

         sqlmapper中的配置:

        <!-- 多个参数时,mybatis会做特殊处理;多个参数会被封装成一个map
          key:param1,param2,.......paramN
          value:传入的参数值
          #{ }就是从map中获取指定key的值 -->
        <select id="selectEmpByIdAndName" resultType="employee">
            select * from employee where id = #{param1} and name = #{param2}
        </select>

    3、多个参数时(命名参数方式)

        mapper接口中的方法:利用@Param配置进行命名参数

         sqlmapper中的配置:

        <!-- 多个参数命名方式 -->
        <select id="selectEmpByIdAndName" resultType="employee">
            select * from employee where id = #{id} and name = #{name}
        </select>

    4、参数为POJO类

      mapper接口中的方法:

       sqlmapper中的配置:

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

        <insert id="addEmp" parameterType="employee" >
            insert into employee(name,gender) values(#{name},#{gender})
        </insert>

    5、如果多个参数不是业务模型中的数据,没有对应的pojo,(这些参数不经常使用的前提下为了方便,也可以直接传入map(不用@Param注解时,mybatis默认把多个参数封装在一个map中),自己封装可以指定key值;可以和上面第二点对比

      mapper接口中的方法:

      sqlmapper中的配置

        <select id="selectEmpByIdAndName" resultType="employee">
            select * from employee where id = #{idtest} and name = #{nametest}
        </select>

      测试方法中传入map

        @Test
        public void test3() throws IOException {
            String source = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(source);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            
            //获取sqlSession实例,能直接执行映射的sql语句
            SqlSession sqlSession = sqlSessionFactory.openSession();
            EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
            Map map = new HashMap();
            map.put("idtest", 1);
            map.put("nametest", "xiaohon");
            Employee employee = employeeMapper.selectEmpByIdAndName(map);
            System.out.println(employee);
            sqlSession.close();
        }

    6、如果多个参数不是业务模型中的数据,没有对应的pojo,(另外这些参数经常使用),可以编写一个TO(Transfer Object)数据传输对象进行封装对象,进行传参

  • 相关阅读:
    文本中溢出的文字在结尾显示为三个点
    git bash 如何建分支
    git本地仓库和远程仓库连接
    button不能直接添加href属性实现页面跳转
    【JAVA】【集合9】ArrayList和Vector区别
    【JAVA】【集合8】Java中的Vector
    【JAVA】【集合7】Java中的ArrayList
    【JAVA】【集合6】Java中的Collections工具类
    【JAVA】【集合5】Java中的List接口
    【JAVA】【集合4】Java中的Collection接口
  • 原文地址:https://www.cnblogs.com/lyh233/p/12342472.html
Copyright © 2011-2022 走看看