输入和输出映射
通过
parameterType
完成输入映射,通过
resultType
和
resultMap
完成输出映射。
1.1 parameterType
传递
pojo
包装对象
可以定义
pojo
包装类型扩展
mapper
接口输入参数的内容。
需求:
自定义查询条件查询用户信息,需要向
statement
输入查询条件,查询条件可以有
user
信息、商品信息。。。。
1.1.1
包装类型
1.1.2 mapper.xml
1.1.3 mapper.java
1.1.4
测试
1.1.5
异常
如果
parameterType
中指定属性错误,异常,找不到
getter
方法:
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userCusto' in 'class cn.itcast.mybatis.po.UserQueryVo'
### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userCusto' in 'class cn.itcast.mybatis.po.UserQueryVo'
注意:如果将来和
spring
整合后,不是通过调用
getter
方法来获取属性值,通过反射强读取
pojo
的属性值。
1.2 resultType
指定输出结果的类型(
pojo
、简单类型、
hashmap..
),将
sql
查询结果映射为
java
对象 。
1.2.1
返回简单类型
mapper.xml
mapper.java
注意:
如果查询记录结果集为一条记录且一列再使用返回简单类型。
1.3 resultMap(
入门
)
resultType
:指定输出结果的类型(
pojo
、简单类型、
hashmap..
),将
sql
查询结果映射为
java
对象 。
使用
resultType
注意:
sql
查询的列名要和
resultType
指定
pojo
的属性名相同,指定相同属性方可映射成功
,如果
sql
查询的列名要和
resultType
指定
pojo
的属性名全部不相同,
list
中无法创建
pojo
对象的。
resultMap
:将
sql
查询结果映射为
java
对象。
如果
sql
查询列名和最终要映射的
pojo
的属性名不一致,使用
resultMap
将列名和
pojo
的属性名做一个对应关系 (列名和属性名映射配置)
1.3.1 resultMap
配置
1.3.2
使用
resultMap
resultMap和select同一个mapper.xml:
resultMap和select不同mapper.xml:
例如resultMap在一个namespace为test的mapper.xml中
1.3.3 mapper.java