MyBatis笔记03 参数与结果封装
参数
输入类型可以是:
简单类型
pojo对象
使用OGNL表达式解析对象字段的值,#{}或${}括号中的值为pojo属性名称
pojo包装对象
把实体类包装起来,进行条件查询
OGNL表达式
Object Graphic Navigation Language
通过对象的取值方法来获取数据,省略get
如获取用户名,类中的写法:user.getUsername()
OGNL表达式写法:user.username
MyBatis中,由于parameterType中已经提供了属性所属的类,可以直接写username,不需要写对象名
条件查询例
通过QueryVo设置查询条件
1 | public class QueryVo { |
此时用username就需要加对象名
1 | <!-- 根据queryVo的条件查询用户 --> |
1 |
|
结果封装
resultType可以是:
- 简单类型
- pojo对象
- pojo列表
名称对应
如果本来属性名全是小写,数据库中也全是小写,可以正常执行
把属性名从全小写改成山峰,如userid改成userId,username改成userName,运行查所有
可能只有userName的值查出来了
因为windows系统下mysql不区分大小写
但是linux系统下区分
解决方法
- 取别名
1 | select id as userId,username as userName,address as userAddress,sex as userSex,birthday as userBirthday from user |
在sql语句层面解决问题,执行效率高
- MyBatis配置
1 | <!-- 配置 查询结果的列名和实体类的属性名的对应关系 --> |
此时resultType要改成resultMap,说明使用userMap解析结果封装
1 | <select id="findAll" resultMap="userMap"> |
开发效率高些