如何从SQL查询映射两个变量-MyBatis

乔希

因此,我在下面有这个选择查询,该查询将两个表连接起来并检索一个字符串:

<select id =“getAppVerByConfId” parameterType=“java.lang.String” resultType=“java.lang.String”>
SELECT t.app_ver
FROM 
 application a 
   JOIN transaction t on  t.txn_id = a.txn_id
WHERE 
a.confirmation_id = #{0}
</select>

然后我以它为模板编写了第二个查询,该查询几乎相同,但是只是从表中检索了一个不同的参数。

<select id =“getStepNameByConfId” parameterType=“java.lang.String” resultType=“java.lang.String”>
SELECT t.step_name
FROM 
application a 
JOIN transaction t on  t.txn_id = a.txn_id 
WHERE
a.confirmation_id = #{0}

两者都可以很好地工作,并且可以在程序的同一位置使用它们。但是肯定有比这更好的方法了吗?我应该能够进行一次查询,然后将结果映射到所需的内容,对吗?我应该制作一个结果集,然后将其拉出吗?也许作为HashMap,我可以通过键检索值?我可以使用AS运算符吗?即“ SELECT t.app_ver AS appVersion”?我的想法是,这是为了将变量传递到查询中,而不是为了将它们取出来?

如果对此有任何想法,我希望听听他们的意见。我基本上是试图将它们组合成一个查询,并且我需要能够检索正确的值,并且不能将app_ver分配给step_name,反之亦然。

干杯

正如您所说的,t.app_ver as appVersion在您select的名称中使用别名(并不是一个坏主意但这只是将要映射的列的名称。因此,如果您使用别名作为下一个,则t.app_ver as appVersion, t.step_name as stepName您的列名称将为appVersionstepName

然后,要映射结果,您有多种选择,将其映射到map结构中并不是一个坏主意,这很容易,您只需要将结果类型设置为hashmap,就可以像这样(并且不需要任何东西Resultmap) :

哈希图

官方页面中的示例

<select id="selectPerson" parameterType="int" resultType="hashmap">
  SELECT * FROM PERSON WHERE ID = #{id}
</select>

列将是键,行将是映射中的值。

由映射到行值的列名作为键

因此,要获取您的值,您将需要使用列名称作为映射中的键:

String appVersionValue = map.get("appVersion");

结果图

使用它的另一种方法来创建具有需要映射的属性的类,然后创建您的resultmap

结果图定义如下:

resultMap –最复杂,功能最强大的元素,它描述如何从数据库结果集中加载对象。

您的课程如下:

public class Application{

   private String appVersion;
   private String stepName;

   //.... getters and setters

}

然后,您的结果映射将使用列属性映射列名称,该类属性使用为此创建的类来指定类型(在这种情况下为Application):

<resultMap id="applicationResultMap" type="Application">
  <result property="appVersion" column="appVersion"/>
  <result property="stepName" column="stepName"/>
</resultMap>

(请注意,因为在此示例中,列和属性被称为相等,所以在某些情况下,列被称为app_version和属性appVersion,例如, <result property="appVersion" column="app_version"/>

最后,在您的选择中指定使用此命令resultmap

<select id="selectMethodName" resultMap="applicationResultMap">
  select t.app_ver as appVersion, t.step_name as stepName
  from your_table
</select>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用MyBatis映射树?

来自分类Dev

Mybatis映射对象列表

来自分类Dev

查找相关的mybatis查询

来自分类Dev

MyBatis运行本机查询

来自分类Dev

MyBatis运行本机查询

来自分类Dev

动态mybatis xml查询

来自分类Dev

Mybatis(iBatis)XML映射配置

来自分类Dev

Java 8 LocalDate与Mybatis的映射

来自分类Dev

如何在Mybatis中映射多个bean?

来自分类Dev

如何让mybatis将列表映射到对象

来自分类Dev

如何使用mybatis实现递归映射?

来自分类Dev

mybatis查询中的集合大小

来自分类Dev

Spring Boot Mybatis动态查询

来自分类Dev

MyBatis:如何从查询中存储多个值?

来自分类Dev

来自mybatis的SQL过程调用

来自分类Dev

来自mybatis的SQL过程调用

来自分类Dev

如何通过 Spring Boot + Mybatis + Mybatis Generator 构建项目?

来自分类Dev

如何用mybatis注释枚举if

来自分类Dev

Mybatis如何运行sql“desc table”

来自分类Dev

mybatis的映射器文件中的访问变量值

来自分类Dev

如何连接两个sql查询?

来自分类Dev

MyBatis无法使用布尔映射

来自分类Dev

mybatis中的字符串映射列表

来自分类Dev

MyBatis <collection>映射中的组合键

来自分类Dev

MyBatis性能-访问映射器

来自分类Dev

mybatis映射器文件转义字符

来自分类Dev

使用myBatis映射嵌套的Oracle CURSOR(ResultSet)

来自分类Dev

MyBatis TooManyResultsException用于看似正确的映射

来自分类Dev

MyBatis数据映射。收藏。关系表