mybatis查询匹配机制图文详解

第一种查询方式匹配机制

如何找到我们想要的sql语句

第一步:

先匹配sqlsqssion所在的MybatisUtil.java

第二步:

去匹配mybatis-config.xml

匹配mappers中的所有的xml文件的namespace,

如dao.RoleDao,再匹配sql语句的id

注意:如果这些xml文件之中有相同的namespace,接着去匹配id,如果id再相同,就会出现错误,系统不知道要匹配哪个

第二种查询方式匹配机制

利用反射去找RoleDao接口的class对象及其接口所在路径

如dao.RoleDao,然后利用反射找到接口的getUserByRole方法名字并传参

正好拼接成dao.RoleDao.getUserByRole

getMapper匹配机制例如先找namespace=“dao.RoleDao”,再找id="getUserByRole"

然后利用第一种方式的匹配机制去匹配对应的sql语句

总结

到此这篇关于mybatis查询匹配机制图文的文章就介绍到这了,更多相关mybatis查询匹配机制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis参数处理实现方法汇总

    1.单个参数 mybatis不会做特殊处理. #{参数名/任意名}:取出参数值. 2.多个参数 mybatis会做特殊处理. 多个参数会被封装成 一个map. key:param1...paramN,或者参数的索引也可以. value:传入的参数值. #{}就是从map中获取指定的key的值: 多个参数传递的时候要使用命名参数的形式: 3.命名参数:明确指定封装参数时map的key:@Param("id") 多个参数会被封装成 一个map, key:使用@Param注解指定的值 val

  • MyBatis SELECT基本查询实现方法详解

    1.返回一个LIST <!-- public List<Employee> getEmpsByLastNameLike(String lastName); --> <!--resultType:如果返回的是一个集合,要写集合中元素的类型 --> <select id="getEmpsByLastNameLike" resultType="com.atguigu.mybatis.bean.Employee"> selec

  • mybatis-generator自动生成dao、mapping、bean配置操作

    我就废话不多说了,大家还是直接看代码吧~ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_

  • Mybatis示例之SelectKey的应用

    SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. 不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦. SelectKey需要注意order属性,像Mysql一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值. 像Oracle这样取序列的情况,需要设置为before,否则会报错. 下面是一个xml和注解的例子,SelectKey很简单,两个例子就够了: <insert id=&quo

  • MyBatis SpringMVC整合实现步骤详解

    1.添加spring相关jar包 2.配置ehcache jar包. 3.添加ehcache mybatis 适配器jar包(在mybatis官网) 4.添加spring mybatis 适配器jar包(在mybatis)官网 5.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi

  • 关于使用Mybatisplus自带的selectById和insert方法时的一些问题

    一.关于使用Mybatisplus自带的selectById和insert方法时的一些问题 1.selectById的问题 (1).表的主键列名不是id时 查询不到数据,因为Mybatisplus自动生成的sql语句where后面拼接的是where null = ? 这就表示表的主键列名的名字不是id,而Mybatisplus默认的是使用id为主键名的 (2).解决方法 @Id @TableId("commodity_id") @Column("commodity_id&qu

  • MyBatis全局映射文件实现原理解析

    全局配置文件为mybatis-config.xml 1.properties标签 <properties resource="dbconfig.properties"></properties> 可以使用properties来引入外部properties配置文件的内容 引入方式有两种: ①resource:引入类路径下的资源 ②url:引入网络路径或者磁盘路径下的资源 2.settings标签 <settings> <setting name=

  • 详解Mybatis中的select方法

    selectById方法 根据id,查询记录 public void updateRecycleAssayBusinessItemCharge(String Id) { AssayBusinessItemCharge assayBusinessItemCharge = assayBusinessItemChargeService.selectById(Id); assayBusinessItemCharge.setRecordStatus(RecordStatusEnum.VALID.getVa

  • mybatis查询匹配机制图文详解

    第一种查询方式匹配机制 如何找到我们想要的sql语句 第一步: 先匹配sqlsqssion所在的MybatisUtil.java 第二步: 去匹配mybatis-config.xml 匹配mappers中的所有的xml文件的namespace, 如dao.RoleDao,再匹配sql语句的id 注意:如果这些xml文件之中有相同的namespace,接着去匹配id,如果id再相同,就会出现错误,系统不知道要匹配哪个 第二种查询方式匹配机制 利用反射去找RoleDao接口的class对象及其接口所

  • SpringBoot + WebSocket 实现答题对战匹配机制案例详解

    概要设计 类似竞技问答游戏:用户随机匹配一名对手,双方同时开始答题,直到双方都完成答题,对局结束.基本的逻辑就是这样,如果有其他需求,可以在其基础上进行扩展 明确了这一点,下面介绍开发思路.为每个用户拟定四种在线状态,分别是:待匹配.匹配中.游戏中.游戏结束.下面是流程图,用户的流程是被规则约束的,状态也随流程而变化 对流程再补充如下: 用户进入匹配大厅(具体效果如何由客户端体现),将用户的状态设置为待匹配 用户开始匹配,将用户的状态设置为匹配中,系统搜索其他同样处于匹配中的用户,在这个过程中,

  • mybatis的插件机制示例详解

    前言 Mybatis作为一个应用广泛的优秀的ORM框架,已经成了JavaWeb世界近乎标配的部分,这个框架具有强大的灵活性,在四大组件(Executor.StatementHandler.ParameterHandler.ResultSetHandler)处提供了简单易用的插件扩展机制.Mybatis对持久层的操作就是借助于四大核心对象.MyBatis支持用插件对四大核心对象进行拦截,对mybatis来说插件就是拦截器,用来增强核心对象的功能,增强功能本质上是借助于底层的动态代理实现的,换句话说

  • MapTask工作机制图文详解

    MapTask工作机制如图所示.  (1)Read阶段:MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value. (2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value. (3)Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果.在该函数内部,它会将生成的key/value分区(调用

  • C#异常捕获机制图文详解

    异常捕获机制 C# 1.示意图 2.异常捕获机制,代码: 3.异常捕获机制,结果: 4.求几周,剩余几天?代码: 5.结果: 6.求几月几周零几天 设一个月30天 代码: 7.结果:

  • mysql查询的控制语句图文详解

    mysql查询的控制语句 字段去重 **关键字:distinct** 语法:select distinct 字段名 from 表名; 案例:对部门进行去重 Select distinct dep from emp; ifnull语法 null与任何数字相加都等于null 使用ifnull可以替换null的值 语法:Select ifnull(可能为空的字段名,如果为空替换成什么)from 表名: 案例: 查看员工月薪与佣金之和 Select sal+ifnull(comm,0) from emp

  • MyBatis 动态SQL和缓存机制实例详解

    有的时候需要根据要查询的参数动态的拼接SQL语句 常用标签: - if:字符判断 - choose[when...otherwise]:分支选择 - trim[where,set]:字符串截取,其中where标签封装查询条件,set标签封装修改条件 - foreach: if案例 1)在EmployeeMapper接口文件添加一个方法 public Student getStudent(Student student); 2)如果要写下列的SQL语句,只要是不为空,就作为查询条件,如下所示,这样

  • Mybatis调用Oracle存储过程的方法图文详解

    1:调用无参数的存储过程. 创建存储过程: Mapper.xml 配置:经测试其他标签(update.insert.select)也可以. Mapper.java MapperTest.java 测试 2:有参数的存储过程调用: 2.1存储过程的创建: 2.2Mapper.xml 的配置: 2.3Mapper.java 2.4MapperTest.java 测试 控制台输出: 3:存储过程的结果集调用. 3.1创建存储过程: 3.2 Mapper.xml 配置 配置 resultMap结果集字段

  • Java Fluent Mybatis 聚合查询与apply方法详解流程篇

    前言 接着上一篇文章:Java Fluent Mybatis 分页查询与sql日志输出详解流程篇 我把分页已经调整好了,现在实验一下官方给出的聚合查询方法. GitHub代码仓库:GitHub仓库 数据准备 为了聚合查询的条件,添加了几条数据. MIN 我们试着获取最小的年龄. 方法实现 @Override public Integer getAgeMin() { Map<String, Object> result = testFluentMybatisMapper .findOneMap(

  • 图文详解Java的反射机制

    目录 1.什么是反射 2.Hello,java反射 3.java程序运行的三个阶段 4.反射相关类 5.反射的优化 6.Class类分析 7.获取Class对象的六种方式 8.类加载机制 动态加载和静态加载 类加载流程概述 加载阶段 连接阶段 初始化 9.通过反射获取类的结构信息 1.什么是反射 反射就是Reflection,Java的反射是指程序在运行期可以拿到一个对象的所有信息. 加载类后,在堆中就产生了一个class类型的对象,这个对象包含了类的完整结构的信息,通过这个对象得到类的结构.这

随机推荐