Mybatis是目前国内比较流行的ORM框架,特点是可以写灵活的SQL语句,非常适合中小企业的面向数据库开发。

本文总结自己开发过程中常用的Mybatis操作。

一、插入操作

  • 主键自增插入单条

    <insert id="insert" parameterType="UserInfoDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
    insert into user_info
    (
    `user_name`,
    `hashed_password`,
    `phone_number`
    )
    values
    (
    #{userName},
    #{hashedPassword},
    #{phoneNumber}
    )
    </insert>
    <insert id="insert" parameterType="UserInfoDO">
    <!-- mysql数据库order="AFTER",oracle数据库order="BEFORE"-->
    <selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="java.lang.Integer">
    SELECT LAST_INSERT_ID()
    </selectKey>
    insert into user_info
    (
    `id`,
    `user_name`,
    `hashed_password`,
    `phone_number`
    )
    values
    (
    #{id},
    #{userName},
    #{hashedPassword},
    #{phoneNumber}
    )
    </insert>
  • 主键自增批量插入

        <insert id="insertList" parameterType="UserInfoDO" useGeneratedKeys="true" keyProperty="id">
    insert into user_info
    (
    `user_name`,
    `hashed_password`,
    `phone_number`
    )
    values
    <foreach collection="list" item="userInfo" separator=",">
    (
    #{userInfo.userName},
    #{userInfo.hashedPassword},
    #{userInfo.phoneNumber}
    )
    </foreach>
    </insert>

二、更新操作

    <update id="updateUser" parameterType="UserInfoDO" keyProperty="id">
update user_info
<set>
<if test="userName != null">user_name = #{userName},</if>
<if test="hashedPassword != null">hashed_password = #{hashedPassword},</if>
<if test="phoneNumber != null">phone_number = #{phoneNumber},</if>
</set>
<!--当所有if都失效的时候也不会报sql语法错误-->
id = #{id}
where id = #{id}
</update>

[Mybatis]Mybatis常用操作的更多相关文章

  1. Spring Boot入门系列(十九)整合mybatis,使用注解实现动态Sql、参数传递等常用操作!

    前面介绍了Spring Boot 整合mybatis 使用注解的方式实现数据库操作,介绍了如何自动生成注解版的mapper 和pojo类. 接下来介绍使用mybatis 常用注解以及如何传参数等数据库 ...

  2. MyBatis学习01(初识MyBatis和CRUD操作实现)

    1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...

  3. MyBatis jdbcType常用类型

    MyBatis jdbcType常用类型 jdbcType与javaType对应关系 javaType jdbctype CHAR String VARCHAR String LONGVARCHAR ...

  4. 【MyBatis】MyBatis实现CRUD操作

    1.实现基本CRUD功能 使用MyBatis对数据完整的操作,也就是CRUD功能的实现.根据之前的内容,要想实现CRUD,只需要进行映射文件的配置. 范例:修改EmpMapper.xml文件,实现CR ...

  5. 【mybatis】mybatis中insert操作,返回自增id

    需求是这样的: mybatis中insert操作,返回自增id,因为这个自增id需要给后续业务用到. 原本是这样的: 将insert语句传入,正常执行insert操作,返回int永远是 0[失败] 或 ...

  6. MyBatis的数据库操作

    MyBatis的数据库操作 大学毕业有一段时间了,作为一名没有任何开发工作经验的大专毕业生想找到一份软件开发的工作确实很难,但我运气还算不错,应聘上一份java web开发的工作.作为一名新人,老板给 ...

  7. 05 Mybatis的CRUD操作和Mybatis连接池

    1.CRUD的含义 CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写.主要被用在描述软件系统中 ...

  8. JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  9. MyBatis的Insert操作详解

    一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType ,入参的全 ...

  10. Mybatis多表操作

    一:引言 在学习完前面的mybatis基本语法后,大家都有个认知,这个Mybatis太强大了,比之前使用JDBC写方便多了,但是你们当初在使用原生JDBC写SQL查询的时候有没有遇到过多表查询呢?肯定 ...

随机推荐

  1. Linux内核配置编译及基本调试方法

    一.Linux内核配置编译 1. 交叉编译设置:make ARCH=arm CROSS_COMPILE=arm-linux- 注:也可以直接修改顶层Makefile ARCH ?= arm CROSS ...

  2. js原型链、继承、this指向等老生常谈却依然不熟的知识点——记录解析

    开始记录学习过程—— 很详细的解析过程——https://juejin.im/post/5c72a1766fb9a049ea3993e6 借鉴阅读——https://github.com/KieSun ...

  3. 171.Excel列表序号

    2020-03-17 Excel表列序号 A -> 1. B -> 2 Z -> 26 AA -> 27 ZY -> 701 示例: 输入: s = "LEET ...

  4. Clear Writer v1.7 更新

    拖更了这么久了的我终于来更新了--这可能是今年上半年最后一次更新了-- 这次我打算把 Clear Writer 公开发布了. 下载链接 下载链接在这里. (这次用蓝奏,不用奶牛快传了) Clear W ...

  5. jsc和luac文件 xxtea 解密.

    # -*- coding: utf-8 -*- import xxtea import os src = "./assets/src" dst = "./assets/s ...

  6. vc6.0的项目如何在整个项目中查询内容呢?试试vs2015

    vc6.0的项目如何在整个项目中查询内容呢?试试vs2015 https://blog.csdn.net/txwtech/article/details/101308795

  7. JavaWeb网上图书商城完整项目--12.项目所需jquery函数介绍之ajax

    jquery中使用ajax发送异步请求 下面的一个案例在input输入框失去焦点的时候发送一个异步的请求: 我们来看程序的案例: 这里要强调的是返回值最好选择是json,json对应的就是对象,Jav ...

  8. linux网络编程-posix信号量与互斥锁(39)

    -posix信号量信号量 是打开一个有名的信号量 sem_init是打开一个无名的信号量,无名信号量的销毁用sem_destroy sem_wait和sem_post是对信号量进行pv操作,既可以使用 ...

  9. 一不小心,我就上传了 279674 字的 MySQL 学习资料到 github 上了

    自从2019年11月我们出版了<千金良方--MySQL 性能优化金字塔法则>一书之后,持续不断有人来询问我MySQL 4 个系统字典库相关的问题,因为篇幅原因,书中并没有完整收录4个字典库 ...

  10. ubuntu18.04安装nodejs最新版、指定版 12.x 14.x

    今天准备在 ubuntu 服务器里面安装 nodejs 版本,ubuntu 18.04 仓库 nodejs 默认是 8.x 版本. 1. 通过 apt 安装 nodejs 在 Ubuntu 18.04 ...