博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis输入输出映射
阅读量:6430 次
发布时间:2019-06-23

本文共 3008 字,大约阅读时间需要 10 分钟。

一、输入映射

  1、传递简单类型

  2、传递pojo对象

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

  测试:

@Test    public void testFindUserByUser()    {        SqlSession sqlSession=sqlSessionFactory.openSession();            UserMapper userMapper=sqlSession.getMapper(UserMapper.class);            User user=new User();        user.setId(1);        user.setUsername("徐剑");                List
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配置文件:

  测试代码:

@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
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
map = new HashMap
(); map.put("id", 1); map.put("username", "徐剑"); //传递Hashmap对象查询用户列表 List
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
list = userMapper.findUserListResultMap(1); System.out.println(list); //关闭session session.close(); }

 

  

转载地址:http://lhnga.baihongyu.com/

你可能感兴趣的文章
Python教程6
查看>>
zabbix实现自动发现功能添加磁盘监控
查看>>
ext grid 前台grid加载数据碰到数据重复只显示一条
查看>>
Eclipse智能提示及快捷键
查看>>
在windows下安装php redis扩展
查看>>
PHP漏洞 (转)
查看>>
js获取iframe的id
查看>>
一个完整的WSDL文档及各标签详解
查看>>
mysql8.0.14 安装
查看>>
svn is already locked解决方案
查看>>
C++基础算法学习——猜假币
查看>>
1039. 到底买不买(20)
查看>>
JavaScript的块级作用域
查看>>
前端将markdown转换成html
查看>>
Hibernate 框架入门(一)
查看>>
缩略信息是: sending message to a Handler on a dead thread 我是用IntentService时报的
查看>>
gulp - less 在node.js上的安装和使用
查看>>
iOS tableViewCell plane格式下,接近section边缘不显示分割线却被复用解决办法 ...
查看>>
Linux下怎么使用任务管理器和真人接口源码出售进程管理
查看>>
百度编辑器ueditor 异步加载时,初始化没办法赋值bug解决方法
查看>>