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. 温故知新-快速理解zookeeper功能&应用&选举机制

    文章目录 zookeeper简介 什么是zookeeper zookeeper应用场景 zookeeper特点 zookeeper的角色 zookeeper的数据模型 节点数据结构 节点类型 zook ...

  2. 源码分析(5)-ArrayList、Vector和LinkedList(JDK1.8)

    一.概述 1.线程安全:ArrayList和LinkedList非线程安全的.Vector线程安全的. 2.底层数据结构:ArrayList和Vector底层数据结构是数组:LinkedList双向链 ...

  3. ELK的踩坑之旅

    前言 设计思路如下 有3台机器 2台做elasticsearch的主副节点 1台做kibana和elasticsearch_head 由于机器匮乏我还在这台机器上部署了logstash和nginx服务 ...

  4. .Net Core WebAPI + Axios +Vue 实现下载与下载进度条

    故事的开始 老板说:系统很慢,下载半个小时无法下载,是否考虑先压缩再给用户下载? 本来是已经压缩过了,不过第一反应应该是用户下的数量多,导致压缩包很大,然后自己测试发现,只是等待的时间比较久而已,仍然 ...

  5. Winner Winner【模拟、位运算】

    Winner Winner 题目链接(点击) 题目描述 The FZU Code Carnival is a programming competetion hosted by the ACM-ICP ...

  6. C# 9.0 新特性之模式匹配简化

    阅读本文大概需要 2 分钟. 记得在 MS Build 2020 大会上,C# 语言开发项目经理 Mads Torgersen 宣称 C# 9.0 将会随着 .NET 5 在今年 11 月份正式发布. ...

  7. (三)JavaMail发送附件

    代码如下: package cases; import com.sun.mail.util.MailSSLSocketFactory; import javax.activation.DataHand ...

  8. startActivityForResult调用另外一个Activity获取返回结果

    startActivityForResult(intent,requestCode)可以调用另外一个Activity,并返回结果. 换头像案例 activity_main.xml <?xml v ...

  9. sockaddr_in与sockaddr区别

    先粘代码 struct sockaddr { __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ char s ...

  10. opencv3.1.0 计算机中丢失 opencv_world310d.dll _vs2017解决方法

    ---------------------------opencv1.exe - 系统错误---------------------------无法启动此程序,因为计算机中丢失 opencv_worl ...