xml gridview控件增删改查_Mybatis之XML如何映射到方法
前言
上文Mybatis之方法如何映射到XML中介绍了Mybatis是如何将方法进行分拆出方法名映射到statementID,参数如何解析成xml中sql所需要的,以及返回类型的处理;本文将从XML端来看是如何同方法端进行映射的。
XML映射类
前两篇文章中了解到通过Mapper类路径+方法名映射xxMapper.xml中的namespace+statementID,而namespace+statementID块其实在初始化的时候在Configuration中保存在MappedStatement中,所以我们在增删改查的时候都会看到如下代码:
MappedStatement ms = configuration.getMappedStatement(statement);
在Configuration中获取指定namespace+statementID的MappedStatement,而在Configuration是通过Map维护了对应关系;已最常见的Select语句块为例,在XML中的配置的结构如下:
其他增删改除了个别的几个关键字比如:keyProperty,keyColumn等,其他和select标签类似;再来看一下MappedStatement类中相关的属性:
public final class MappedStatement { private String resource; private Configuration configuration; private String id; private Integer fetchSize; private Integer timeout; private StatementType statementType; private ResultSetType resultSetType; private SqlSource sqlSource; private Cache cache; private ParameterMap parameterMap; private List resultMaps; private boolean flushCacheRequired; private boolean useCache; private boolean resultOrdered; private SqlCommandType sqlCommandType; private KeyGenerator keyGenerator; private String[] keyProperties; private String[] keyColumns; private boolean hasNestedResultMaps; private String databaseId; private Log statementLog; private LanguageDriver lang; private String[] resultSets; ...省略...}
select标签里面的关键字基本可以在类MappedStatement中找到对应的属性,关于每个属性代表的含义可以参考官方文档:https://mybatis.org/mybatis-3/sqlmap-xml.html;除了关键字还有sql语句,对应的是MappedStatement中的SqlSource,sql语句有动态和静态的区别,对应的SqlSource也提供了相关的子类:StaticSqlSource和DynamicSqlSource,相关的sql解析类在XMLScriptBuilder中:
public SqlSource parseScriptNode() { MixedSqlNode rootSqlNode = parseDynamicTags(context); SqlSource sqlSource = null; if (isDynamic) { sqlSource = new DynamicSqlSource(configuration, rootSqlNode); } else { sqlSource = new RawSqlSource(configuration, rootSqlNode, parameterType); } return sqlSource; }
具体哪种sql是动态的,哪种是静态的,相关逻辑在parseDynamicTags中判断的,此处大致说一下其中的原理:遇到${}和动态标签如,,则为DynamicSqlSource,否则为StaticSqlSource也就是常见的#{};在解析动态sql的时候Mybatis为每个标签专门提供了处理类NodeHandler,初始化信息如下:
private void initNodeHandlerMap() { nodeHandlerMap.put("trim
xml gridview控件增删改查_Mybatis之XML如何映射到方法相关推荐
- php xml 增删改查,PHP实现对xml进行简单的增删改查(CRUD)操作示例
本文实例讲述了PHP实现对xml进行简单的增删改查(CRUD)操作.分享给大家供大家参考,具体如下: 假如有下面xml文件: 55.8 56 40 339 如何使用php对它进行CRUD?其实像这种简 ...
- java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码
本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; ...
- ExtJS EditorGridPanel 示例之xml格式Store前后台增删改查
程序入口html页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- JAVA 通讯录 —— 实现对XML文件数据的增删改查
心血来潮,带着好奇写了人生中第一篇博客,哈哈哈哈 ~ 嗝 ~ ~ 这篇文章主要就是分享自己做的一次项目作业,一是为了分享,二是用另外一种方式保存自己的代码 嘻嘻嘻 ~.还是个编程萌新,所以有啥写的 ...
- XML基本概念及增删改查操作
一.概念及特征: 1. XML 指可扩展标记语言(Extensible Markup Language),用户可以自己定义标签.XML 被设计用来传输和存储数据,而 HTML 用于格式化并显示数据,并 ...
- GridView控件RowDataBound事件中获取列字段的几种方法(转)
GridView是ASP.NET中功能强大的数据显示控件,它的RowDataBound事件为我们提供了方便的控制行.列数据的途径. 软件开发网 www.mscto.com 要获取当前行的某个数据列,有 ...
- ssm使用全注解实现增删改查案例——web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...
- ssm使用全注解实现增删改查案例——mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC & ...
- ssm使用全注解实现增删改查案例——applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
最新文章
- c#调用c++(Opencv)dll的实例
- 20172315 2018-2019-1《程序设计与数据结构》课程总结
- 腾讯滑块验证码识别和加速度模拟(1)
- is this mysql server_mysql出现is not allowed to connect to this mysql server异常的解决办法
- ConcurrentHashMap源码分析(保姆式讲解):Put、扩容原理详解 博主可答疑
- c语言数组用户注册登入管理系统_[内附完整源码和文档] 基于JAVA的干部档案管理系统...
- 浙江富商的24条至理经验
- 学习笔记(01):2020软考网络工程师--基础知识视频教程-计算机硬件基础(一)
- 史上最全的PS快捷键大全
- 两台电脑间使用网线连接实现共享
- 【ybt高效进阶1-5-2】【luogu P3456】山峰和山谷 / GRZ-Ridges and Valleys
- pl/sql模拟登录并获取Oracle ebs职责
- coreldraw x4如何出血_coreldraw x4教程
- Python对列表去重的多种方法(四种方法)
- 鲲鹏系列服务器,鲲鹏系列云服务器
- 借助“商业模式画布”探索产品的用户需求与价值主张
- 用 Java 实现贪吃蛇小游戏
- kafka 和其他 MQ 之间的区别
- Cty的Linux学习笔记(十二)
- 计算机科学投稿初审被增刊,科学网—投稿过程中的困惑:增刊 - 张晓锋的博文...