mybatis动态传入表名并返回map,返回空间点的坐标

本文介绍如何使用MyBatis实现动态表名查询,并返回特定字段的数据。通过XML映射文件与DAO层代码结合,展示如何获取指定空间表中的shape字段坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis学习中
动态传入表名并返回某几个字段map,取某个空间表的shape字段的坐标。代码如下

xml文件
<select id="selectLocationByPrimaryKey" statementType="STATEMENT" resultType="java.util.HashMap" parameterType="java.util.Map">
   select t.shape.minx as X,t.shape.miny as Y from ${sourceObj} t where OBJECTID = ${featureId}
  </select>
注意statementType必须,且值必须是大写的STATEMENT,参数传入为多个,用map。

dao文件
public void selectLocByPK(String sourceObj, Long featureId) {
params.put("sourceObj", "sde."+sourceObj);
params.put("featureId", featureId);
Map map = this.getSqlSessionTemplate().selectOne("selectLocationByPrimaryKey", params);
Double x = (Double)map.get("X");
Double y = (Double)map.get("Y");
System.out.println(x+","+y);
}
注意查询的是sde用户下的表名是参数传递的sourceObj,因为用其他用户连接的数据库 所以查询其他用户下的表的时候必须用用户名加表名。当然前提你这个用户有查询其他用户表的权限。params类型是HashMap。xml文件中取值时候必须要跟此地方绑定的key值一直,不然取到为null.此处key为xml文件的时候查询列的别名。


只是一条数据,多条数据可以用selectList 方法 返回List,xml基本不用变。
Mybatis 是一种流行的 Java 持久层框架,用于与数据库进行交互。在实际开发中,有时需要根据不同的条件动态拼接。以下是使用 Mybatis 实现动态拼接的方法。 首先,在 Mybatis 的 SQL 映射文件中,我们可以使用动态 SQL 来根据条件拼接。例如,使用 `<choose>` 标签和 `<when>` 标签来判断条件,根据条件拼接不同的,如下所示: ```xml <select id="selectData" parameterType="Map" resultMap="resultMap"> SELECT * FROM <choose> <when test="tableName == 'table1'"> table1 </when> <when test="tableName == 'table2'"> table2 </when> <otherwise> table3 </otherwise> </choose> WHERE id = #{id} </select> ``` 这里的 `tableName` 是一个传递给 SQL 的参数,用于判断选择哪个进行拼接。 接下来,在 Java 代码中,我们只需将正确的传递给 Mybatis 的 SQL 语句执行方法。例如,使用 `<map>` 来包装参数,将 `tableName` 参数传递给 SQL,如下所示: ```java Map<String, Object> paramMap = new HashMap<>(); paramMap.put("id", 1); paramMap.put("tableName", "table1"); List<Map<String, Object>> result = sqlSession.selectList("selectData", paramMap); ``` 在上述代码中,我们将 `tableName` 参数设置为 "table1",这样 Mybatis 就会动态拼接 `table1` 执行相应的 SQL 查询。 通过以上方法,我们可以实现根据不同的条件动态拼接。这在某些场景下非常实用,例如在多租户系统中,根据不同的租户拼接不同的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值