例如:

···

insert into TEST1(
<if test="base_id!=null and base_id!=''">
base_id,
</if>
<if test="name!=null and name!=''">
name,
</if>
<if test="age!=null and age!=''">
age,
</if>
<if test="address!=null and address!=''">
address,
</if>
<if test="year!=null and year!=''">
year
</if>
) VALUES (
<if test="base_id!=null and base_id!=''">
#{base_id},
</if>
<if test="name!=null and name!=''">
#{name},
</if>
<if test="age!=null and age!=''">
#{age},
</if>
<if test="address!=null and address!=''">
#{address},
</if>
<if test="year!=null and year!=''">
to_date(#{year},'yyyy-MM-dd HH24:mi:ss')
</if>
)

···

这样的代码可以用如下的方式在mybatis的Provider里面使用:

InsProvider.kt:

fun insertCommonByParamMap(paramMap: HashMap<String, *>): String {
return "<script>" + paramMap.get("sql").toString() + "</script>"
}
把SQL和参数全部放到Map里面,mybatis会自动解析出来

Mapper文件里如下方式调用:
@InsertProvider(type = InsProvider::class, method = "insertCommonByParamMap")
fun insertCommonByParamMap(paramMap: HashMap<String, *>): Int

java代码与kotlin相似,这里不再赘述

Mybatis里@InsertProvider、@UpdateProvider方法里使用if test标签的更多相关文章

  1. [iOS]为什么不要在init初始化方法里调用self.view

    首先.如果你调用self.view的时候,就会调用view的getter方法, 这个时候,view是空的,那么系统就会自动给你创建一个view,然后就会触发ViewDidLoad方法.那么这个时候,如 ...

  2. Android Service生命周期 Service里面的onStartCommand()方法详解

    在Demo上,Start一个Service之后,执行顺序:onCreate - > onStartCommand 然后关闭应用,会重新执行上面两步. 但是把代码拷贝到游戏工程发现,关闭游戏后,只 ...

  3. Hutool工具里,POST方法,body中传参的几种调用方法

    接口说明: POSTMAN测试: JAVA代码: package com.provy.guard.api; import java.util.HashMap; import java.util.Map ...

  4. vue.js国际化vue-i18n插件的使用问题,在模版文本、组件方法、jsf方法里的使用

    vue.js国际化vue-i18n插件的使用问题,在模版文本.组件方法.jsf方法里的使用 1.在文本里使用{{$t("xxx")}} <span>{{$t(" ...

  5. java 里面的 native 方法

    第一篇: 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method   简单地讲,一个Native Meth ...

  6. vue中,写在methods里的B方法去调A方法的数据,访问不到?

    今天在写项目的时候,发现了一个京城性忽略的问题,在vue的methods的方法里面定义了两个方法,如下: getTaskList() { api.growthDetails.taskList({ ap ...

  7. 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S

    题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另 ...

  8. 第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性

    Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRe ...

  9. objc中类方法里的self指的是什么

    所有转出“博客园”,请您注明出处:http://www.cnblogs.com/xiaobajiu/p/4121431.html objc中类方法里的self指的是什么 在objc中是可以在类方法中使 ...

随机推荐

  1. C#多线程---Event类实现线程同步

    一.简介 我们使用类(.net Framework中的类,如 AutoResetEvent, Semaphore类等)的方法来实现线程同步的时候,其实内部是调用操作系统的内核对象来实现的线程同步. S ...

  2. IO异常--缓冲流--转换流--序列化流( IO流2 )

    1.IO异常的处理 JDK7前处理:使用try...catch...finally 代码块,处理异常部分 // 声明变量 FileWriter fw = null; try { //创建流对象 fw ...

  3. RabitMq过期时间TTL

    第一种:给消息设置过期时间 启动一个插件 @Bean public DirectExchange DirectExchange() { return new DirectExchange(" ...

  4. LeetCode入门指南 之 回溯思想

    模板 result = {} void backtrack(选择列表, 路径) { if (满足结束条件) { result.add(路径) return } for 选择 in 选择列表 { 做选择 ...

  5. ubuntu 设置简单密码

    ubuntu自带的修改密码界面要求比较长.比较复杂的密码.但通过命令行可以不受此限制. 用如下命令,按提示输入密码即可. sudo passwd username

  6. sizeof关键字

    sizeof关键字 sizeof不是函数,所以不需要包含任何头文件,它的功能是计算一个数据类型的大小,单位为字节 sizeof的返回值为size_t size_t类型在32位操作系统下是unsigne ...

  7. 洛谷P2115 Sabotage G 题解

    题目 [USACO14MAR]Sabotage G 题解 本蒟蒻又来了,这道题可以用二分答案来解决.我们可以设答案最小平均产奶量为 \(x \ (x \in[1,10000])\) .然后二分搜索 \ ...

  8. 性能测试工具JMeter 基础(四)—— 录制脚本

    对于JMeter中HTTP请求除了手动添加以为还可以进行脚本录制,有两个方法: 使用badboy录制,录制完成后,将录制的文件导入JMeter中 使用JMeter自带的录制原件进行录制(HTTP(S) ...

  9. 分布式搜索引擎Elasticsearch在CentOS7中的安装

    1. 概述 随着企业业务量的不断增大,业务数据随之增加,传统的基于关系型数据库的搜索已经不能满足需要. 在关系型数据库中搜索,只能支持简单的关键字搜索,做不到分词和统计的功能,而且当单表数据量到达上百 ...

  10. cmd中输出换行和转义字符

    cmd 中输出换行和转义字符 今天想写一个安装 Windows 任务的 bat 脚本,在命令行界面输出换行和转义一些字符,居然搜索了好久才搜到正确操作,因此记录一下. 在命令行界面输出换行 echo. ...