1.引子

Mybatis配置文件显示红叉有错误,而实际检查又没有错误,这是因为开发环境不能识别这种类型的xml文件。要解决这个问题,就要让IDE开发环境能够“认识”这个文件类型,我们要让IDE环境将这种文件格式给关联起来。

2.格式关联

1)找到定义xml格式的DTD文件

Mybatis主要有两种配置文件,一个是全局配置文件mybais-config.xml,另一个是映射配置文件mapper.xml。我们需要将定义这两种配置文件的DTD文件与开发工具关联起来。而这两个DTD文件都在mybatis的jar包(‘mybatis-x.x.x.jar’)里面 ,那么就要先将此jar包解压成普通的文件夹。
这两个DTD文件文件就在子目录org\apache\ibatis\builder\xml中,进入这个文件夹可以看到"mybatis-x-config.dtd" 、“mybatis-x-mapper.dtd” (‘x’用jar包的主版本号代替,我这里是’mybatis-3-mapper.dtd’),它们分别对全局配置文件mybais-config.xml 、mapper.xml进行格式定义。

2)将DTD文件与开发工具关联(以myeclipse为例)

点击导航工具栏的Window–> Preferences  ,然后搜索XML,可看到xml的设置选项 ,点击子选项XMLCatalog --> User Specified Entries

--> Add , 再然后,点击 Catalog Entry --> FileSystem…(选择刚才解压出来的"mybatis-3-mapper.dtd"文件) 。


      Key type保持默认的“Public ID"即可,而Key设置为 mapper映射文件头部" <!DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN” “http://mybatis.org/dtd/mybatis-3-mapper.dtd” > “中的 "PUBLIC"后的双引号中的字符串一致即可。我这里便将Key设置为”-//mybatis.org//DTD Mapper 3.0//EN"(不加引号),最后点击 Finish完成就行了。


       而关联全局配置文件的DTD文件与上述关联映射配置文件的步骤类似。

3.自动生成配置文件

mybatis的配置文件中的子节点比较多,其先后顺序也有一定要求。如果纯靠手工去一一配置,容易出错,且效率效低。如果我们已经进行过XML格式关联,那么可以用开发工具帮助我们生成大量的常用的子节点,我们只需要在其中填写属性即可。
      File --> New -->Other–>XML(Basic Templates) --> Next --> Next --> (单选) Create XML file from a DTD file --> Next --> (单选) Select XML Catalog entry
然后在Workspace Files中浏览,找到定义此XML格式的DTD文件,再点击Next。

      在弹出的新窗口的“Content options”一栏中,如果勾选了"Create optional attributes" 、"Create optional elements"两项,开发工具将自动为我们生成大量的子元素及属性(项目实施中用不到的元素、属性,可以在写具体配置的时候删除掉)。最后点击Finish完成。

   开发工具生成的Config文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"mybatis-3-config.dtd" >
<configuration>
<properties resource="" url="">
<property name="" value=""/>
</properties>
<settings>
<setting name="" value=""/>
</settings>
<typeAliases>
<typeAlias alias="" type=""/>
<package name=""/>
</typeAliases>
<typeHandlers>
<typeHandler handler="" javaType="" jdbcType=""/>
<package name=""/>
</typeHandlers>
<objectFactory type="">
<property name="" value=""/>
</objectFactory>
<objectWrapperFactory type=""/>
<reflectorFactory type=""/>
<plugins>
<plugin interceptor=""/>
</plugins>
<environments default="">
<environment id="">
<transactionManager type=""/>
<dataSource type=""/>
</environment>
</environments>
<databaseIdProvider type="">
<property name="" value=""/>
</databaseIdProvider>
<mappers>
<mapper class="" resource="" url=""/>
<package name=""/>
</mappers>
</configuration>

Mybatis配置文件无故报错、无自动完成提示的解决方法,及自动生成主要配置项的更多相关文章

  1. linux下svn客户端报错Cannot negotiate authentication mechanism的解决方法

    svn客户端报错Cannot negotiate authentication mechanism的解决方法: 问题出现的原因之一: 因为SVN服务器配置了saslauthd服务用来实现与ldap的对 ...

  2. 安装PHP过程中,make步骤报错:(集合网络上各种解决方法)

    安装PHP过程中,make步骤报错:(集合网络上各种解决方法) (1)-liconv -o sapi/fpm/php-fpm /usr/bin/ld: cannot find -liconv coll ...

  3. 关于163发邮件报错535 Error:authentication failed解决方法

    关于发邮件报错535 Error:authentication failed解决方法 调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授 ...

  4. shell报错:-bash: [: ==: 期待一元表达式 解决方法 ([: ==: unary operator expected)

    shell报错:-bash: [: ==: 期待一元表达式 解决方法 ([: ==: unary operator expected) blogdaren 2015-02-26  抢沙发 14916人 ...

  5. [Jira]启动报错无法删除缓存文件felix-cache的解决方法

    背景: 由于公司机房停电,jira服务器在停电期间需要关机处理,然而待重启启动服务时,jira出现报错,页面报错信息如下: Unable to clean the cache directory: / ...

  6. linux安装tomcat后启动报错Cannot find ./catalina.sh的解决方法

    linux安装tomcat后启动报错: Cannot find ./catalina.shThe file is absent or does not have execute permissionT ...

  7. zabbix监控报错zabbix server is not running解决方法

    问题描述: 布置好zabbix监控,正常运行.但是重启了虚拟机服务器之后,页面出现如下的报错,而且设置的报信息也是失效的:

  8. python安装locustio报错error: invalid command 'bdist_wheel'的解决方法

    locust--scalable user load testing tool writen in Python(是用python写的.规模化.可扩展的测试性能的工具) 安装locustio需要的环境 ...

  9. Linux服务器init 5启动图形界面,报错Retrigger failed udev events的解决方法

    1.开启linux系统的桌面环境,使用startx未成功,报如下错误: 提示:Retrigger failed udev events [root@ /]# startx xauth: creatin ...

随机推荐

  1. oracle问题:char类型数据查询不到

    select distinct id,name from test_table b where b.ID='001' ; id为char字段类型,使用该语句查询不出数据. 解决方法:加trim().改 ...

  2. Mysql: if 结构

    if结构 语法 if  条件1  then  语句1; elseif   条件2   then  语句2; ... else 语句n;   # 可以不写 应用场合:应用在begin end 中 SEL ...

  3. 数据库的交互模式 常用的dos命令 (第一天)

    浏览器和服务器和数据库的交互模式 windows nt(windows系统)的分类:服务操作系统有(server03 server08(R2) 12 16) 个人操作系统有(xp win7 win8 ...

  4. 驰骋BPM系统-表单引擎-流程引擎 2020年大换装

      关键字:驰骋表单引擎,流程引擎,界面升级. 前言概述: 感谢美工与同事们的辛苦工作,ccbpm新年大换装,迎接爱好着,为这阴霾多日的疫情气愤增添一笔光彩. 本次的色系以浅灰色为主,因为ccbpm大 ...

  5. Social GAN代码要点记录

    近日在阅读Social GAN文献的实验代码,加深对模型的理解,发现源代码的工程化很强,也比较适合构建实验模型的学习,故细致阅读.下文是笔者阅读中一些要点总结,有关于pytorch,也有关于模型自身的 ...

  6. 第二章,C语言概述

    2.1 简单的C程序示例 #include <stdio.h> #include <stdlib.h> int main(void) { int num; num=; prin ...

  7. iOS内存管理布局及管理方案-理论篇

    苹果设备备受欢迎的背后离不开iOS优秀的内存管理机制,那iOS的内存布局及管理方案是怎样的呢?我们一起研究下. 内存管理分为五大块 栈区(stack):线性结构,内存连续,系统自己管理内存,程序运行记 ...

  8. mybatis的插入数据后的主键获取

    为什么要在插入数据后获取主键:当有一个订单表和订单详情表,当插入订单表的数据后,需要在订单详情表插入该订单的具体购物情况,订单详情表需要的一个列是订单表的主键或者订单ID.(通俗讲:A表的主键是B表的 ...

  9. Sequence Models Week 2 Emojify

    Emojify! Welcome to the second assignment of Week 2. You are going to use word vector representation ...

  10. Arduino IIC 主从设备连接通信

    目的:        实现Arduino主从设备之间的互相IIC通信,掌握IIC通信协议的使用方法. 器材: Arduino UNO R3 一块 Arduino Nano 三块 面包板   导线 3K ...