Mybatis 动态表名+Map参数传递+批量操作详解
作者:零三一 发布时间:2023-04-02 04:08:00
需求:
之前项目一个变动,需要对3张mysql数据库表数据进行清洗,3张表表名不同,表结构完全相同,需要对这3张表进行相同的增、改、查动作,一开始比较紧急先对一张表进行操作,后来复制了3个一样的 service、dao、mapper等。后来对代码进行优化,研究了一下动态表名的处理。
1,查询操作:
查询操作只需要传入动态表名的时候,传递参数仍然是map
mapper.xml内,需要使用statementType="STATEMENT",采用非预编译模式
mapper.xml内,动态表名的获取使用 ${tableName}
2,批量插入操作:
查询操作只需要传入动态表名的时候,传递参数仍然是map
mapper.xml内,不需要使用statementType="STATEMENT",否则会在运行时报错提示语法错误(具体原因不是很清楚)。
动态表名的获取使用 ${tableName}, 而insert 的 collection 属性名为传入参数的map内的key名,不需要任何修饰符。
list内容使用 #{item.guid}来获取,而不是$。
补充知识:mybatis动态传入表名并返回map,返回空间点的坐标
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基本不用变。
来源:https://blog.csdn.net/xiaomao267/article/details/79957499


猜你喜欢
- 使用Vibrator的vibrate()可调节震动时间;cancel()取消震动。 <!—震动权限--><use
- 实例如下:/// <summary> /// 上传ftp服务 /// </summary>
- 本文实例讲述了Java实现接口的枚举类。分享给大家供大家参考,具体如下:一 点睛枚举类也可以实现一个或多个接口。与普通类实现一个或多个接口完
- 我们平时在日常项目中经常会遇到图片的上传和访问的情景,平时我们可能习惯于把图片传到resource或者项项目中的某个位置,这样会有一个缺点,
- 什么是Spring BootSpring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初
- 一:回顾反射机制这种重点回顾一下反射Method!为什么要回顾反射机制呢?因为我们后面要手写一个简易的Spring框架,便于我们理解其中的核
- 一.背景本文主要介绍Java 8中时间的操作方法java.util.Date是用于表示一个日期和时间的对象(注意与java.sql.Date
- 前言偶然逛国外博客,看到了一个介绍文字动画的库,进入 pub 一看,立马就爱上这个动画库了,几乎你能想到的文字动画效果它都有!现在正式给大家
- INotifyPropertyChanged:该接口包含一个事件, 针对属性发生变更时, 执行该事件发生。// /
- 本文实例为大家分享了viewGroup实现点击动画效果展示的具体代码,供大家参考,具体内容如下public class MyCustomVi
- 1.SpringBoot整合JDBCTemplate1.1.导入jdbc相关依赖包主要的依赖包:<dependency> &nb
- 前言👉本文中所有的代码和运行结果都是在amazon corretto openjdk 1.8环境中的,如果你不是使用该环境,可能会略有偏差。
- 本文实例汇总了Java各种排序算法。分享给大家供大家参考,具体如下:1. 冒泡排序:public class SortTest { pub
- 本文实例讲述了C#中的事务用法。分享给大家供大家参考。具体如下:直接用SQL语句创建事务, 当然不是什么稀奇事了, 好是好, 只是麻烦.看看
- 实现android双击后退键退出当前APP功能实现该功能基本思路是,1, 监听后退键 , 比较两次后退间隔 , 低于两秒则出发退出2, 退出
- 最近的一个接口项目,传的参数要求是json,需要特殊处理一下。重点是这两句话:httpPost.setHeader("Conten
- JDK 中提供了一些对无状态协议请求(HTTP )的支持,下面我就将我所写的一个小例子(组件)进行描述:首先让我们先构建一个请求类(Http
- 一、环形链表1、创建结点环形链表其实也很好理解,就是将单链表的头和尾连接起来,就形成了环形链表。public class Node { &n
- 事务挂起和事务恢复源码解读在学习spring事务的时候,一定会涉及到一个概念,无法避免的,就是事务挂起和事务恢复对于事务挂起和事务恢复,可以
- AOP拦截Controller获取@PathVariable注解传入参数前言:最近项目中需要对controller传入的应用标识(appMa