Mybatis insert动态sql

2人阅读 评论(0) 收藏 举报

mybatis的一个比较先进的思想是把Sql语句写在了配置xml文件(也支持注解),通过配置文件的方式,免去了一般软件开发的硬编码,当业务需求改变的时候,只需要更改sql语句即可!

下面是个人在学习mybatis动态insert语句的笔记,留着参考! 
在写insert子句的时候,由于不知道需要插入多少字段,mybatis通过prefix,suffix,suffixOverrides很好的解决了该问题,实现了动态insert语句。

<insert id="insertSelective" parameterType="com.bootdo.system.domain.LogDO">
    insert into sys_log
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="userId != null">
        user_id,
      </if>
      <if test="username != null">
        username,
      </if>
      <if test="operation != null">
        operation,
      </if>
      <if test="time != null">
        time,
      </if>
      <if test="method != null">
        method,
      </if>
      <if test="params != null">
        params,
      </if>
      <if test="ip != null">
        ip,
      </if>
      <if test="gmtCreate != null">
        gmt_create,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="userId != null">
        #{userId,jdbcType=BIGINT},
      </if>
      <if test="username != null">
        #{username,jdbcType=VARCHAR},
      </if>
      <if test="operation != null">
        #{operation,jdbcType=VARCHAR},
      </if>
      <if test="time != null">
        #{time,jdbcType=INTEGER},
      </if>
      <if test="method != null">
        #{method,jdbcType=VARCHAR},
      </if>
      <if test="params != null">
        #{params,jdbcType=VARCHAR},
      </if>
      <if test="ip != null">
        #{ip,jdbcType=VARCHAR},
      </if>
      <if test="gmtCreate != null">
        #{gmtCreate,jdbcType=TIMESTAMP},
      </if>
    </trim>
  </insert>
查看评论

MyBatis使用动态SQL批量插入数据

数据对比分析时,难免要向另一张表插入分析结果,则需要插入多行数据。MySQL支持的一种插入多行数据的INSERT语句写法是INSERT INTO 表名 (字段名1,字段名2,字段名3) VALUES ...
  • shf4715
  • shf4715
  • 2015-12-19 13:43:39
  • 3673

MyBatis动态SQL之增、删、改、查操作

MyBatis动态SQL之增、删、改、查操作MyBatis动态SQL之增删改查操作 概述 MyBatis动态SQL支持 动态SQL之查询 动态SQL之插入 动态SQL之删除 动态SQL之更新 概述在实...
  • jpzhu16
  • jpzhu16
  • 2016-10-13 22:23:20
  • 12439

08. mybatis 高级:动态sql批量插入数据

相比普通插入方式,批量插入会有数倍的性能提升,同时大大减少了要执行的sql 语句,减轻了数据库压力,但是在使用批量插入时,需要注意批量插入的数量有限,因为是做的字符串拼接,sql语句的长度是有限制的...
  • zgf19930504
  • zgf19930504
  • 2016-02-08 12:01:48
  • 1127

oracle+mybatis 使用动态Sql在要insert的字段不确定的情况下实现批量insert

最近做项目遇到一个挺操蛋的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰。先来看一下最终我是怎么实现的: ...
  • u012116457
  • u012116457
  • 2015-11-01 13:56:04
  • 5049

MyBatis动态SQL foreach标签实现批量插入

需求:查出给定id的记录: SELECT * FROM tb1_emplyee WHERE id IN #{item_id} ...
  • yalishadaa
  • yalishadaa
  • 2017-05-20 16:21:24
  • 20320

mybatis动态插入sql语句

if标签 if标签就类似于jstl的if标签 where标签 在执行多条件选择时,可能会多出一个and 关键字。譬如: select last_name,email,id,gende...
  • qq_33574890
  • qq_33574890
  • 2017-12-17 23:23:19
  • 850

Mybatis 动态insert语句

mybatis的一个比较先进的思想是把Sql语句写在了配置xml文件(也支持注解),通过配置文件的方式,免去了一般软件开发的硬编码,当业务需求改变的时候,只需要更改sql语句即可!下面是个人在学习my...
  • huangbaokang
  • huangbaokang
  • 2017-09-21 10:33:32
  • 296

oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert

最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰。 先来看一下最终我是怎么实现的:          ...
  • keketrtr
  • keketrtr
  • 2016-04-28 11:11:01
  • 1929

mybatis注解实现动态sql

传统情况下,我们使用mybatis,都是通过映射文件获取sql。在这里,我们通过对实体添加注解类,在调用的过程中,通过对实体参数对象和注解类进行解析,获取到动态的sql。 大致流程: 如图...
  • hsgao_water
  • hsgao_water
  • 2016-08-17 14:14:59
  • 8512

MyBatis动态sql_foreach下foreach批量插入两种方式

MyBatis动态sql_foreach下foreach批量插入两种方式 EmployeeMapperDynamicSQL.java package com.cn.mybatis.da...
  • zhupengqq
  • zhupengqq
  • 2017-11-26 16:14:40
  • 1217
    个人资料
    持之以恒
    等级:
    访问量: 7254
    积分: 456
    排名: 11万+
    文章分类