项目场景:
在mybatis中,主配置文件中配置别名报错
Mybatis 支持默认别名,我们也可以采用自定义别名方式来开发,主要使用在< select resultType=”别名”>
mybatis.xml 主配置文件定义别名:
<typeAliases>
<!--
定义单个类型的别名
type:类型的全限定名称
alias:自定义别名
-->
<typeAlias type="com.yuzuru.domain.Student" alias="mystudent"/>
<!--
批量定义别名,扫描整个包下的类,别名为类名(首字母大写或小写都可以)
name:包名
-->
<package name="com.yuzuru.domain"/>
<package name="...其他包"/>
</typeAliases>
mapper.xml 文件,使用别名表示类型
<select id="selectStudents" resultType="mystudent">
select id,name,email,age from student
</select>
配置如下(错误):
<configuration>
<!--定义别名-->
<typeAliases>
<package name="com.yuzuru.domain"/>
<package name="com.yuzuru.VO"/>
</typeAliases>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
</configuration>
问题描述
报错 : org.xml.sax.SAXParseException: 元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,databaseIdProvider?,mappers?)"。
原因分析:
分析 : 这里是说主配置文件中的 configuration 标签内的东西有问题,但是配置别名用的标签typeAliases是没问题的
报错原因 : configuration 中的元素,不仅类型有限制,也有顺序限制,必须按照(properties?,settings?,typeAliases?,typeHandlers?…)顺序排放,
解决办法 : 将元素顺序换一下,就好了
解决方案:
将顺序按照properties,settings,typeAliases,typeHandlers 来写就好了
<configuration>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!--定义别名-->
<typeAliases>
<package name="com.yuzuru.domain"/>
<package name="com.yuzuru.VO"/>
</typeAliases>
</configuration>