Caused by: org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.

由于这种错误都犯了几次,现在把问题记录下来。
第一种产生的原因是:sql中的大于号(>)或(<)小于号没有进行转义。
XML只有5个转义符:<,>,&,”,©;的转义字符分别如下: < >& " '
第二种产生的原因是:id值重复,原因很可能是你复制一个select时候,忘记更改id值或者复制多了。
第三种产生的原因是:sql代码书写错误。可能原因是:在plsql中用常量执行正常,但是换成变量的时候可能少个括号或者逗号之类的。
第四种产生的原因是:更改后的sql文件没有及时编译到classes目录,具体原因不知。解决办法是:project-clean。如果这样还是没有编译进去,再试试如图所示(清理tomcat临时目录):

———
我的问题是 在写成 @select(sql)的时候 没有 里面的 脚本没有转义 等于号 不用转义

ORA-01791:not a SELECTed expression

select distinct 和order by一起使用的时候,order by中必须是常量或者select列表中出现的表达式。

Caused by: org.apache.ibatis.type.TypeException: Error setting non null for parameter #6 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Invalid column index

这个问题 要么是 字段错误 如 拼写错误 (字段值拼写错误,sql错误 如字段错误等等)
要么是 没有用加类型 #{username,jdbcType=varchar}

我的问题是 本来以为没有加类型 但是最后才知道是 表用错了

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1;

  1. spring boot项目启动报错,错误提示如下:
  2. nested exception is org.springframework.beans.factory.BeanCreationException:
  3. Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]:
  4. Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException:
  5. Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception;
  6. nested exception is org.springframework.core.NestedIOException: Failed to parse config resource:
  7. class path resource [mybatis-config.xml]; nested exception is org.apache.ibatis.builder.BuilderException:
  8. Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException:
  9. Error creating document instance. Cause: org.xml.sax.SAXParseException;
  10. lineNumber: 1; columnNumber: 1; 前言中不允许有内容。;
  11. 仔细肉眼检查了mybatis-config.xml和各个新提交的mapper映射文件,都看不出什么问题,百思不得其解。
  12. 经大师提点,怀疑是字符编码问题,于是把新提交的mapper文件复制出来用notepad打开,点击格式菜单,发现这几个文件的编码格式都是 “以UTF-8格式编码”,改成 “以UTF-8BOM格式编码”,保存之后再复制回来,启动项目,报错消失。
  13. 原来这几个mapper文件都是由模板生成,模板生成出来的文件是UTF-8BOM格式,java只认UTF-8BOM格式。
  14. 大多数记事本工具(Emedit等)默认是以utf-8 BOM方式,会在文件中加入BOM头,导致这个错误:
  15. Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1;前言中不允许有内容。
  16. notepad打开,格式改成 “以UTF-8BOM格式编码”即可。