Mybatis系列之(七)参数深入

参数深入

1. ParameterType(输入类型)

1.1 通过ParameterType传递Pojo对象

Mybatis 使用 ognl 表达式解析对象字段的值
ognl 表达式
object graphic navigation language
对象 图 导航 语言
通过对象的取值方法(属性的get方法)来获取数据,在写法上把get给省略了。
eg:获取用户的名称属性
类中的写法:user.getUsername();
ognl表达式:user.username
mybatis中为什么能直接写username,而不用user.呢,因为在parameterType中已经提供了属性所属的类,所以此时不需要写对象名,直接写属性名即可

1.2 多个对象组成一个查询条件(通过ParameterType传递Pojo包装对象)

  1. 首先将查询条件所用到的多个实体类封装到查询类QueryVo
    在这里插入图片描述
  2. 在Dao中加入查询方法,将查询类作为输入参数
    在这里插入图片描述
  3. 在mapper中创建对应的查询标签
    在这里插入图片描述
  4. 测试类中创建测试方法
    在这里插入图片描述

2. ResultType(输出类型)

2.1 怪异的现象

实体类属性如下
在这里插入图片描述
数据库字段如下
在这里插入图片描述
查询语句如下
在这里插入图片描述
查询结果如下
在这里插入图片描述
我日???????,实体类属性和数据库字段不是不对应么,userName竟然有值??????
原来,Mysql数据库在windows系统下不区分大小写,但是,Mysql数据库在Linux系统下严格区分大小写

2.2 解决实体类属性与数据表字段的对应关系

2.2.1 背景

当ResultType的值为pojo对象,数据库在返回查询结果时需要将数据表各个字段的值封装进pojo对象中(注意:是数据库进行封装),此时,若属性名与字段名不匹配,就会出现字段值无法封装进pojo对象的属性中导致pojo对象属性为null的现象

2.2.2 在Sql语句层面上解决

在这里插入图片描述

2.2.3 在Mybatis层面上解决

type是指查询结果实体类的全限定类名
在这里插入图片描述

2.2.4 总结

不同的解决方案通过不同的场景进行选择

解决方法 运行效率 开发效率
Sql别名
resultMap标签

3. 编写Dao实现类实现CRUD操作

posted @   刘二水  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示