zoukankan      html  css  js  c++  java
  • Mybatis输入输出映射

    一、输入映射

      1、传递简单类型

    <select id="findUserById" parameterType="int" resultType="com.test.pojo.User">
            select * from user where id = #{id}
    </select>

      2、传递pojo对象

      Mybatis使用OGNL表达式解析对象字段的值。

    <select id="findUserByUser" parameterType="com.test.pojo.User" resultType="com.test.pojo.User">
           select * from user where id=#{id} and username like '%${username}%'
    </select>

      测试:

    @Test
        public void testFindUserByUser()
        {
            SqlSession sqlSession=sqlSessionFactory.openSession();    
            UserMapper userMapper=sqlSession.getMapper(UserMapper.class);    
            User user=new User();
            user.setId(1);
            user.setUsername("徐剑");
            
            List<User> user2=userMapper.findUserByUser(user);
            System.out.println(user2);        
            sqlSession.close();    
        }

      3、传递包装对象

      定义包装对象将查询条件(pojo)以类组合的方式包装起来。

    public class QueryVo
    {
        User user;
        
        //其他条件。。。
        
        public User getUser()
        {
            return user;
        }
        public void setUser(User user)
        {
            this.user = user;
        }
    }

      mapper.xml配置文件:

    <select id="findUserList" parameterType="com.test.pojo.QueryVo" resultType="com.test.pojo.User">
           select * from user where id=#{user.id} and username=#{user.username}
    </select>

      测试代码:

    @Test
        public void testFindUserList()
        {
            SqlSession sqlSession=sqlSessionFactory.openSession();    
            UserMapper userMapper=sqlSession.getMapper(UserMapper.class);    
            
            QueryVo queryVo=new QueryVo();
            User user=new User();
            user.setId(2);
            user.setUsername("谢伟");
            queryVo.setUser(user);
            List<User> user2=userMapper.findUserList(queryVo);
            System.out.println(user2);        
            sqlSession.close();    
        }

      4、传递HashMap

      sql映射文件:

      

      测试:

      @Test
        public void testFindUserByHashmap()
        {
            SqlSession session = sqlSessionFactory.openSession();
            //获限mapper接口实例
            UserMapper userMapper = session.getMapper(UserMapper.class);
            //构造查询条件Hashmap对象
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("id", 1);
            map.put("username", "徐剑");
            //传递Hashmap对象查询用户列表
            List<User> list = userMapper.findUserByHashmap(map);
            System.out.println(list);    
            //关闭session
            session.close();
        }

     二、输出映射

      1、输出简单类型

      输出简单类型必须查询出来的结果集有一条记录,最终讲第一个字段的值转换为输出类型。

      2、输出pojo对象

      参考输入pojo对象, 使用session调用selectOne查询单条记录。

      3、输出pojo列表

      使用session的selectList方法获取pojo列表。

      :输出pojo对象和输出pojo列表在sql中定义的resultType是一样的。

      返回单个pojo对象要保证sql查询出来的结果集为单条,内部使用session.selectOne方法调用,mapper接口使用pojo对象作为方法返回值。

       返回pojo列表表示查询出来的结果集可能为多条,内部使用session.selectList方法,mapper接口使用List<pojo>对象作为方法返回值。

      

      resultMap:可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。

          如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。

      resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

      定义resultMap:

      

      测试代码:

      @Test
        public void testFindUserListResultMap() throws Exception
        {
            SqlSession session = sqlSessionFactory.openSession();
            //获限mapper接口实例
            UserMapper userMapper = session.getMapper(UserMapper.class);
            List<User> list = userMapper.findUserListResultMap(1);
            System.out.println(list);    
            //关闭session
            session.close();
        }

      

  • 相关阅读:
    mysql主从之双主配置
    mysql主从之binlog的工作模式
    mysql主从之主机名导致主从机制失败的问题
    python_文件 处理
    python_字典 学习
    python_元组 学习
    python 基础内置函数表及简单介绍
    python 列表学习
    python函数基础学习
    python迭代器、生成器、列表推倒式
  • 原文地址:https://www.cnblogs.com/xujian2014/p/5459641.html
Copyright © 2011-2022 走看看