这篇文章以前面对SqlSessionFactoryBean的重构为基础,先简单回顾一下做了哪些操作:

  1. 新建SqlSessionFactoryBean,初始代码和mybatis-spring相同;
  2. 重构buildSqlSessionFactory()方法,将众多的if语句抽取为一组小方法,预留自定义配置的方法,同时添加常用属性的getter方法;
  3. 提取组件工厂接口,并提供组件创建工具类SqlSessionComponetFactorys,将散落在不同地方的new Xxx()集中管理,便于组件的替换。

现在来看怎么扩展,首先创建SchemaSqlSessionFactoryBean,继承重构后的SqlSessionFactoryBean,在XML配置中同步修改为新建的类:

public class SchemaSqlSessionFactoryBean extends SqlSessionFactoryBean {

}

对于一些简单的功能扩展,比如设置默认结果类型,扫描指定的类型简称,这里就不过多讨论了,这里集中讲述怎么扩展为使用XSD校验SqlMapper配置。

一、覆盖SqlSessionFactoryBean中的doParseSqlMapperResource()方法,这个方法的作用是解析一个SqlMapper配置文件

当然,为了兼容性,需要先判断是否为DTD,如果是DTD,按原方法解析,否则按自定义方法解析:

package org.dysd.dao.mybatis.schema;

import org.apache.ibatis.executor.ErrorContext;
import org.apache.ibatis.session.Configuration;
import org.springframework.core.NestedIOException;
import org.springframework.core.io.Resource;
import org.springframework.util.xml.XmlValidationModeDetector; public class SchemaSqlSessionFactoryBean extends SqlSessionFactoryBean { @Override
protected void doParseSqlMapperResource(Configuration configuration, Resource mapperLocation)
throws NestedIOException {
int mode = detectValidationMode(mapperLocation);
if(mode == XmlValidationModeDetector.VALIDATION_DTD){//如果是DTD,使用Mybatis官方的解析
super.doParseSqlMapperResource(configuration, mapperLocation);
}else{
try {
// 使用Schema校验
this.doParseSqlMapperResourceWithSchema(configuration, mapperLocation);
} catch (Exception e) {
throw new NestedIOException("Failed to parse mapping resource: '" + mapperLocation + "'", e);
} finally {
ErrorContext.instance().reset();
}
}
} protected void doParseSqlMapperResourceWithSchema(Configuration configuration, Resource mapperLocation){ } private int detectValidationMode(Resource mapperLocation) throws NestedIOException {
int mode = -1;
try {
XmlValidationModeDetector detector = new XmlValidationModeDetector();
mode = detector.detectValidationMode(mapperLocation.getInputStream());
} catch (Exception e) {
throw new NestedIOException("Failed to parse mapping resource: '" + mapperLocation + "'", e);
} finally {
ErrorContext.instance().reset();
}
return mode;
}
}

这里借用了Spring中的XmlValidationModeDetector来侦测XML配置文件的校验模式,逻辑上也很简单,就是一行一行读,在正文开始前,发现有dtd定义,就返回DTD模式,否则返回XSD模式(实际上,不止是侦测模式借用了Spring,后面的自定义命名空间也借鉴了Spring)。

至此,对SqlMapper配置文件的解析工作已经分为两支,兼容mybatis官方的解析,并将XSD模式下的解析导航到方法doParseSqlMapperResourceWithSchema()中。

二、编写用于校验SqlMapper的XSD文件(需要有一定的XSD基础知识,可参考本博客中关于XML部分的学习笔记)

1、先使用一款XML工具,将Mybatis的DTD文件转换为原始的XSD文件,有很多XML工具有这种功能,可以网上搜索一下

这里分成三个层级:

(1)根元素(mapper元素):对应一个SqlMapper文件,有一个namespace属性,表示它的子元素的一个逻辑分类。需注意的是,这里的namespace属性不同于XML命名空间,前者是mybatis自身的一个逻辑分类,后者是用于定义XML文件中可以出现的xml元素和属性约束。

(2)一级子元素(cache|cache-ref|resultMap|parameterMap|sql|insert|update|delete|select):mapper的一级子元素,因为mybatis框架对一级子元素有不同处理,所以这里单独作为一个层级,因为主要是增删改查语句,所以称之为语句级statement元素

(3)其它要素(SQL配置文本,include|trim|where|set|foreach|choose|if):用于配置SQL脚本的文本,以及动态脚本元素,称之为脚本级script元素

2、在生成XSD文件基础之上做如下修改

(1)添加命名空间,比如:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns="http://dysd.org/schema/sqlmapper"
targetNamespace="http://dysd.org/schema/sqlmapper"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" version="1.0">

(2)将一级元素包装为一个元素组statementGroup

aaarticlea/png;base64,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" alt="" />

(3)修改mapper元素,允许出现其它命名空间的元素

aaarticlea/png;base64,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" alt="" />

(4)将动态脚本元素包装为一个元素组dynaScriptGroup,并允许出现其它命名的元素

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsoAAAFOCAIAAAAQPaxEAAAgAElEQVR4nO3dXW8UR9rGcX8YH638HXLg74T2jBzkBC0RUiRWyhGRUQjS4kVEXuIQvEhesnZsTDA2OEDG4AEnMcaemISxPeOonwM/9Ha6qu66u7pmumfm/5OFprurqmtemL6m32rs1z9LqlDVegEAQC+MES8AAEBcxAsAABAZ8QIYCX8Zq7oHAEaJPV789c/MavLStEBu5tFx5/Wbg7v3Hv/r38t37z1+/ebg6LiTjFi8+ODs2Q/Onq26F6PrL2P/29BmH3sLD7qwJzJwT7/Q+wugdyzxwowFuTneydM5ufmHx52VR89Xn77c3n/7tvPH9v7b1afNlUfPD487IxUvkiQhXlSo6Oanb9un086kfzWhiV+16jbxAqiJ+PHCNf/V69byxtbu4cnu4cnu4R+vD092D0+WN7aav+zVNl6MffhhL5olXlQou73RbHv6s33KraU+G0WhJ+aiOnTb+v726D8yAIHq3Iso8eKru2uPtlsv3na33nZevP9b3/71q7trNYwXYx9+mP1KOj2ikcaC3GR2zulMM0DISxPxoEmurrleoYVcx1yrc01a68rOjp09O3Y2fXD62FomtzRbMTupqavnjRfZH+K538G5utli2QeuH82uRco5ZuOuXilXqnl2rmckxw5vrxL3ayV0TO6z2bHs49z/aAC95o8XRXdmuOZfnln4bvvd3/7+j+zfd9vvLs8s1C1eWL+GzM2zsEguXCheeOua0UfTZ82k0JTMzA25pa7JXDQpVHfMIdc3OV4IG8VChc3yQlNFD9BYJ81I5F2FNQcoO6bss6tXwZOF+mx2koQB9I0nXrjO68w+VsaLL+dX7z3f/WG3vbHb3tht//CmvbHbvvd898v51frEC/knjnUTbk66ainLF60r7POQZxZKG8KKTHImEAqnj80HrnbC9mFY6X8Keyetc+TCrvLeloW6cmc0LetbM8uUeUauyUKvsxW7MYD+kOKFKzckmStHhGK5+c9/2vvPamNzv725f9jYb2/utzf32/Orm89/qsW5F8ovHXnfg+swhFlY2auhjBfZoxuu/RyueGH9U/ZKptkAF/qh7zpIIW93Azafyo29ZmZAvHA9r0LRpJ/x4hQhA+g1Z7wQskWOMl781j66+/3T/641Nl6+af76buPV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" alt="" />

(5)使用dynaScriptGroup替换出现动态脚本元素的地方,比如<select>元素

aaarticlea/png;base64,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" alt="" />

(6)其它的一些优化,比如将statementType可以取的三个值STATEMENT、PREPARED、CALLABLE定义为枚举类型:

<xsd:simpleType name="statementType">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="STATEMENT" />
<xsd:enumeration value="PREPARED" />
<xsd:enumeration value="CALLABLE" />
</xsd:restriction>
</xsd:simpleType>

类似的还有parameterMode、jdbcType、javaType等等。

使用XSD校验Mybatis的SqlMapper配置文件(1)的更多相关文章

  1. 使用XSD校验Mybatis的SqlMapper配置文件(2)

    编写好XSD文件,然后来看怎么使用XSD文件校验,并解析SqlMapper文件,也就是实现doParseSqlMapperResourceWithSchema()方法. 为了实现这个功能,有两个基本要 ...

  2. Mybatis中SqlMapper配置的扩展与应用(3)

    隔了两周,首先回顾一下,在Mybatis中的SqlMapper配置文件中引入的几个扩展机制: 1.引入SQL配置函数,简化配置.屏蔽DB底层差异性 2.引入自定义命名空间,允许自定义语句级元素.脚本级 ...

  3. 优化与扩展Mybatis的SqlMapper解析

    接上一篇博文,这一篇来讲述怎么实现SchemaSqlMapperParserDelegate——解析SqlMapper配置文件. 要想实现SqlMapper文件的解析,还需要仔细分析一下mybatis ...

  4. Mybatis中SqlMapper配置的扩展与应用(1)

    奋斗了好几个晚上调试程序,写了好几篇博客,终于建立起了Mybatis配置的扩展机制.虽然扩展机制是重要的,然而如果没有真正实用的扩展功能,那也至少是不那么鼓舞人心的,这篇博客就来举几个扩展的例子. 这 ...

  5. mybatis源码配置文件解析之二:解析settings标签

    在前边的博客中分析了mybatis解析properties标签,<mybatis源码配置文件解析之一:解析properties标签>.下面来看解析settings标签的过程. 一.概述 在 ...

  6. mybatis源码配置文件解析之五:解析mappers标签(解析XML映射文件)

    在上篇文章中分析了mybatis解析<mappers>标签,<mybatis源码配置文件解析之五:解析mappers标签>重点分析了如何解析<mappers>标签中 ...

  7. mybatis 加载配置文件的方法

    一.  使用sqlSessionFactory 的 mapperLocations 进行加载 <!-- SessionFactory --> <bean id="sqlSe ...

  8. MyBatis 创建核心配置文件和 SQL 映射文件

    Mybatis 的两个配置文件(mybatis-config.xml  和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...

  9. IDEA中写MyBatis的xml配置文件编译报错的坑

    IDEA中写MyBatis的xml配置文件编译报错的坑 说明:用IDEA编译工具在项目中使用Mybatis框架,编写mybatis-config.xml和Mapper.xml配置文件时,编译项目出现错 ...

随机推荐

  1. HTML的ul和li标签的使用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. 「2014-4-13」Think twice before starting the adventure

    杂文一篇. 1. 取名字真心是一件特别困难的事情.这位独立开发者花了将近两天的时间,给他的私人项目取了个名字:这篇博客<为何我不鸟你的开源项目>里显然还忽视了一个原因,就是名字取得太烂以至 ...

  3. 学习django之正则表达式re模块

    re(regular expression)模块 正则表达式(regular expression)主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容. 一.re ...

  4. 8.4.4 Picasso

    Picasso 收到加载及显示图片的任务,创建 Request 并将它交给 Dispatcher,Dispatcher 分发任务到具体 RequestHandler,任务通过 MemoryCache ...

  5. ubuntu安装erlang

    照着园子里一篇博文安装erlang,各种错调不出来.最后发现官网有解决方案: https://www.erlang-solutions.com/downloads/download-erlang-ot ...

  6. android开发中监控android软件网络请求的软件Charles使用入门

    1.下载并安状软件,官网在此: http://www.charlesproxy.com/ 2.前题条件,电脑和手机必须在同一网段 3.在Charles界面选择菜单 proxy->proxy se ...

  7. Spring 使用JSTL标签显示后台数据

    1. 先上项目结构图,其中config包下的代码文件参见前一篇博客   http://www.cnblogs.com/njust-ycc/p/6123505.html 引包: 2. 主要代码 (1)U ...

  8. kali基本设置

    一.更换比较快的软件源 修改sources.list文件(su): leafpad /etc/apt/sources.list #debain源 deb http://mirrors.163.com/ ...

  9. 我和Java有个约定

    2012年8月31日,我在父亲的陪伴下,第一次登上的火车,千里迢迢从老家来到了现代化大都市--西安,目睹着这里的繁华,与从小生活的环境截然的天壤之别,蓦然间问自己,你确定这是想来的地方吗? 依稀记得曾 ...

  10. 浏览器 onbeforeunload 事件 兼容写法

    window.onbeforeunload = onbeforeunload_handler; function onbeforeunload_handler() { var warning = &q ...