文章目录
一、parameterType 输入参数
1.传入简单参数
就像在查询单个用户时利用id查询用户信息或者模糊查询的时候指定查询某列的某种指定数据,这时候在sql中我们通常都是利用某个字段去作为条件进行查找,在java的dao层接口方法中,就化成了简单参数的形式,往往是使用包装类。
返回顶部
2.传递pojo对象
Mybatis 使用 ognl 表达式解析对象字段的值, #{…} 或者 ${…} 括号中的值为pojo属性名称。
ognl 表达式:
返回顶部
3.传递pojo包装对象
简单地来讲,可以看做是多了一层的封装~
返回顶部
二、resultType 输出参数
1.输出简单参数
- 输出结果为某个简单类型的值(常见的包装类型)
返回顶部
2.输出pojo对象
- 数出的结果为一个封装类对象
- 返回顶部
3.输出pojo列表
- 输出的结果是某个封装类的对象集合
返回顶部
4.resultMap结果类型
在封装数据库表的实体类的时候,我们要求属性和字段名保持一致;但是如果我们不保持一致的时候怎么使用呢?
对于插入操作而言,我们需要修改以下几点:
同样地,删除、更改操作也只需要针对以上几点操作即可。但是查询就不一样了:
查询后可以发现,只有userName字段有值,而其它列均没有值,这是因为在mysql中可以忽略大小写,所以userName和username是一样的,但是其它列就不是大小写的问题,整个都不一样,所以在和数据库进行映射匹配的时候出了问题。所以我們要做的就是让他们匹配得上!
方法一:取别名
- 这种方式的效率较高,从sql层面进行问题的解决!
返回顶部
方法二:指定resultMap配置
resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。
通过 resultMap将字段名和属性名作一个对应关系, resultMap实质上还需要将查询结果映射到pojo对象中。
resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。
- 这种方式相比于第一种方式较为繁琐,代码量大;但是同时开发效率提升了,后面所有的查询操作,都可以利用这个resultMap。
返回顶部