首页 > 其他分享 >Mybatis系列之(七)参数深入

Mybatis系列之(七)参数深入

时间:2024-02-28 09:38:09浏览次数:27  
标签:实体类 系列 对象 数据库 查询 参数 Mybatis 2.2 属性

参数深入

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操作

标签:实体类,系列,对象,数据库,查询,参数,Mybatis,2.2,属性
From: https://www.cnblogs.com/wzzzj/p/18038972

相关文章

  • Mybatis系列之(六)MyBatis的CRUD操作
    MyBatis的CRUD操作CRUD操作指的是增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)操作1.编程步骤在dao接口中写方法映射配置文件中写对应的配置如果是Insert操作,占位符使用#{},括号中的内容要与实体类属性的get/set方法名保持一致(如果是通过右键生成的方法,......
  • Mybatis系列之(五)Mybatis在使用基于代理Dao的方式实现增删改查时都干了啥事儿
    Mybatis在使用基于代理Dao的方式实现增删改查时都干了啥事儿绝对路径:可能出现机器中没有D盘的情况,需要修改代码相对路径:部署项目后src就不存在了,需要修改代码基于以上两点,读取配置文件仅通过图中的两种方式进行读取构建者模式:专业的事儿由专业的人来做工厂模式:需要新的类的对......
  • Mybatis系列之(三)注解开发步骤
    注解开发步骤1.项目结构新建项目,创建与XML开发完全相同的项目结构删除resources/com文件夹2.全局配置文件修改SqlMapConfig.xml文件的mapper配置部分<!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件--><mappers><!--resource......
  • Mybatis系列之(二)Mybatis 入门
    Mybatis入门1.准备数据创建数据库eesy_mybatis,创建表user,插入数据2.pom文件打包方式<packaging>jar</packaging>导入坐标mybatis坐标mybatis官网文档-入门-安装<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> &......
  • Mybatis系列之(一)Mybatis 概述
    Mybatis概述1.三层架构解决持久层问题项目=框架(半成品)+业务需求表现层:展示数据业务层:业务需求持久层:数据库交互2.持久层技术解决方案2.1JDBC技术(规范)2.2Spring的JdbcTemplate(工具类)Spring中对JDBC的简单封装2.3Apache的DBUtils(工具类)对JDBC的简单封装3.......
  • SpringMVC系列之(十二)拦截器
    拦截器过滤器拦截器拦截器链1.过滤器与拦截器的比较过滤器是servlet规范中的一部分,任何Javaweb工程都可使用;拦截器是SpringMVC自己的,只能在SpringMVC工程中使用。过滤器可以对所有要访问的资源拦截;拦截器只能拦截访问的Controller方法,如果访问的是jsp、html、css、imag......
  • SpringMVC系列之(十一)异常处理
    异常处理1.未进行异常处理的异常传递流程2.SpringMVC异常处理流程3.SpringMVC异常处理开发步骤编写自定义异常类(做提示信息的)编写异常处理器配置异常处理器(跳转到错误提示页面)4.实现Controller中的方法packagecn.itcast.controller;importcn.itcast.domain.U......
  • SpringMVC系列之(十)文件上传
    文件上传1.文件上传的前提form表单的ectype属性(表单请求正文的类型)取值必须是multipart/form-data,默认值是application/x-www-form-urlencodedmethod属性值为post提供文件选择域<inputtype="file"/>2.文件上传的原理ectype=application/x-www-form-urlencoded(默认值)表......
  • SpringMVC系列之(九)响应数据和结果视图
    响应数据和结果视图1.返回值分类这里的返回值指的是Controller中的方法的返回值。1.1String该字符串为逻辑视图名,通过视图解析器解析为物理视图地址。注:底层调用的是ModelAndView1.1.1实际开发中的应用实体类index.jsp<%--CreatedbyIntelliJIDEA.User:商务......
  • SpringMVC系列之(八)HiddentHttpMethodFilter过滤器
    HiddentHttpMethodFilter过滤器1.应用场景由于浏览器自身只支持发送get/post请求,其他请求方式并不支持,该过滤器用于模拟发送各种请求方式的请求(get/post/put/delete)Spring3.0提供2.浏览器发送PUT/DELETE请求的其他实现方式插件WebClient提供的静态方法HiddentHttpMetho......