Java Spring & MyBatis - 如何在 XML 文件中映射 "LEVEL" 数据库列

Java Spring & MyBatis - How can I map "LEVEL" db column in XML file

我是 Java Spring 和 My Batis 的新手,我在映射 DB 列时遇到问题,它是 MyBatis 3.4 XML 文件中 Oracle 中的关键字。

我正在使用 Java Spring 2.2.11、Oracle 19C 和 MyBatis 3.4.0。

映射器XML文件:

<resultMap id="regionResultMap" type="org.idashboard.entity.Region">
    <id column="code" property="code"/>
    <result column="parent_code" property="parentCode"/>
    <result column="ancestors" property="ancestors"/>
    <result column="name" property="name"/>
    <result column="level" property="level"/>
    <result column="sort" property="sort"/>
    <result column="remark" property="remark"/>
</resultMap>

生成SQL:

SELECT code,
       parent_code,
       ancestors,
       name,
       level,
       sort,
       remark
  FROM region
 WHERE code = '110102';

错误描述: [Error] Execution (30: 8): ORA-01788: CONNECT BY clause required in this query block

出现问题是因为我在region table.

中使用了"LEVEL"

我该如何解决这个问题?以及如何使用作为 Oracle 关键字的列名?

提前致谢!

我想我们在 oracle 中有两个选择

首先是在查询中使用别名,但在这种情况下不会为您解决任何问题,因为您将其映射到 xml

中的名称级别

其次你可以使用双引号 (", eg "level"),在 MySQL 默认是使用反引号 (`)

尝试

SELECT code,
       parent_code,
       ancestors,
       name,
       "level",
       sort,
       remark
  FROM region
 WHERE code = '110102';

如果您需要在查询中使用关键字,oracle 使用双引号 (") 来标识该词不是关键字。在 mysql 中,您需要使用反引号 (`)同样的目的。