报错内容:

前段

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-11-16 10:28:21.629 [main] ERROR org.springframework.boot.SpringApplication:858 - Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'permissionsInterceptor': Unsatisfied dependency expressed through field 'sysUserService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sysUserServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sysUserMapper' defined in file [C:\Users\Administrator\Desktop\projects\jeecg-service\jeecg-boot-module-system\target\classes\org\jeecg\modules\system\mapper\SysUserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception...

后段

Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\Users\Administrator\Desktop\projects\jeecg-service\jeecg-boot-module-system\target\classes\org\jeecg\modules\testRecord\mapper\xml\TestRecordMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 1458; columnNumber: 43; The content of elements must consist of well-formed character data or markup.
	at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:594)
	at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:433)
	at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:627)
	at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:197)
	at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$a97dec5.CGLIB$sqlSessionFactory$1(<generated>)
	at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$a97dec5$$FastClassBySpringCGLIB$$410c346e.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)
	at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$a97dec5.sqlSessionFactory(<generated>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	... 57 common frames omitted

解决过程:报错原因从前段看不出,搜了半天搜不到...直接看后段,是mapper.xml文件中出现报错!

报错原因:<> 符号是特殊符号,需要做处理。

and ifnull(xxx, '') <> ''

解决办法:

1. 使用xml转义

使用XML实体引用来表示这些特殊符号。下面是对应的实体引用:

  • 大于符号(>):使用实体引用 &gt;
  • 小于符号(<):使用实体引用 &lt;
  • 大于等于符号(>=):使用实体引用 &gt;=
  • 小于等于符号(<=):使用实体引用 &lt;=
<select id="getUsersByAge" resultType="User">
  SELECT * FROM users
  WHERE age &gt;= #{minAge} AND age &lt;= #{maxAge}
</select>

2. 使用CDATA节区

<select id="getUsersByAge" resultType="User">
  SELECT * FROM users
  WHERE age <![CDATA[ >= ]]> 18
</select>

总结:

在MyBatis的XML文件中,当需要使用特殊符号如 “>”、“<”、“>=”、“<=”、“<>”等时,我们可以采取以下两种常见的处理方式:

1. 使用xml转义:将特殊符号替换为对应的实体引用,以确保XML解析器正确处理这些字符。常见的有 &lt; 代表“<”,&gt; 代表 “>”,&amp; 代表 &,&quot; 代表 ",&apos; 代表 '。

2. 使用CDATA节区:将包含特殊字符的文本放置在CDATA节区中,以保留原始的文本内容,而不需要转义特殊字符。使用CDATA节区时,将文本内容放置在 <![CDATA[ ... ]]> 的标记内,如<![CDATA[ >= ]]>

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐