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 中,您需要使用反引号 (`)同样的目的。
我是 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 中,您需要使用反引号 (`)同样的目的。