首页 > 数据库 >mybatis定义sql语句标签之insert标签

mybatis定义sql语句标签之insert标签

时间:2023-04-27 21:55:17浏览次数:34  
标签:语句 insert INSERT 标签 sql mybatis 主键 属性

这是非常核心的一个标签,CURD是mybatis的核心功能。
insert元素相对于select元素要简单很多,mybatis会在插入之后返回一个整数,表示插入成功后插入的条数。
真实项目中,使用最多的一个点要注意,在插入过程中返回一些自动主键。
因为这个主键,在同一个事务中,还有其它用。例如级联。

属性介绍

属性 说明
id 可以理解为Mybatis执行语句的名称,与Mapper接口一一对应,此属性为必须属性,且在命名空间(mapper标签的namespace)中唯一。
useGeneratedKeys 该属性是获取数据库内部生产的主键,默认为false。
keyProperty 赋值主键的属性名,即把数据库内部生产的主键赋值给该属性。
keyColumn 赋值主键的字段名,即把数据库内部生产的主键赋值给该字段。
parameterType 该属性的含义就是其字面意思,即传入语句的参数类型,是类的全限定类名,非必须。
flushCache 表示执行该语句将清空一级、二级缓存,默认为true。
timeout 超时时间,即程序提交sql语句到数据库等待的时间,超过此设置时间将抛出超时异常,默认设置是不超时,也就是说程序会一直等待直到有结果返回,单位为妙。
前四个标签是非常核心的标签。

简单示例

<insert id="insertAgent">
    INSERT  INTO t_node_agent (host_name, os_type, created_date)
    VALUES (#{hostName}, #{osType}, #{createdDate})
</insert>

返回主键–自增(mysql)

<insert id="insertAgent" parameterType="com.wht.demo.dao.vo.AgentVo" 
		useGeneratedKeys="true" keyProperty="nodeId" keyColumn="node_id">
    INSERT  INTO t_node_agent (host_name, os_type, created_date)
    VALUES (#{hostName}, #{osType}, #{createdDate})
</insert>

Java可在入参的vo中,get到对应的属性

返回主键–非自增
有些时候可能不用自增主键,例如oracle的序列,还有些是业务生成的规则生成主键等。
order mysql使用AFTER,oracle使用BEFORE

<insert id="insertAgent" parameterType="com.wht.demo.dao.vo.AgentVo" 
		useGeneratedKeys="true" keyProperty="nodeId" keyColumn="node_id">
	
	<selectKey keyColumn="node_id" resultType="long" keyProperty="nodeId" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
    INSERT  INTO t_node_agent (node_id,host_name, os_type, created_date)
    VALUES (#{nodeId},#{hostName}, #{osType}, #{createdDate})
</insert>

Java可在入参的vo中,get到对应的属性

标签:语句,insert,INSERT,标签,sql,mybatis,主键,属性
From: https://www.cnblogs.com/hcgk/p/17360332.html

相关文章

  • mybatis控制动态SQL拼接标签之foreach标签
    mybatis控制动态SQL拼接标签之foreach标签foreach标签主要用于构建in条件,可在sql中对集合进行迭代。也常用到批量删除、添加等操作中。这个标签在实际业务中非常常用,当然运维旧项目也会发现,有些坑,用java循环执行sql来表示批量插入。属性说明:collection:collection属性的值有三......
  • Before Insert触发器中的公式字段
    以前以为在beforeinsert触发器中,Lookup对象除了Id之外的字段以及公式字段(Formula)都是null,不能取到值的。没想到昨天由于偶然的原因测试了一下,居然公式字段可以取到值。Salesforce的文档做的很差,在文档中查不到明确的说明。stackoverflow上有个不错的链接 https://salesforce.......
  • 解决 Error querying database. Cause: org.postgresql.util.PSQLException: ��������: �û� "p
    最近做数据库作业做得很崩溃,本来就没学过java,结果还要用mybatis+servlet+jsp,,,,,没办法还是得学啊TT遇到个特别无语的报错:###Errorqueryingdatabase. Cause:org.postgresql.util.PSQLException:��������:�û�"postgres"Password��֤ʧ��###Theerrormayexistincom/test/entity/gra......
  • Sqlserver修改表结构提示不允许保存更改。
    在现有的表中去修改或者增加表字段的时候就会提示:不允许保存更改。您所做的更改要求删除并创建一下表。您对无法重新创建的表进行了更改或启用了“阻止保存要求重新创建表的更改”选项。、如何解决问题:操作步骤:点击“工具”→“选项”→"打开弹窗中选择(设计器)" →"表设......
  • mysql基础
    SQL语句SQL语句分类SQL分类:数据定义语言:简称DDL(DataDefinitionLanguage),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等数据操作语言:简称DML(DataManipulationLanguage),用来对数据库中表的记录进行更新。关键字:insert,delete,update等数据控制语言:简称DCL(Da......
  • MySQL
    1、回表查询与索引覆盖聚簇索引:主键索引一般是聚簇索引。聚簇索引的非叶子结点记录的是索引,叶子结点记录了对应的数据行(所有的字段)。非聚簇索引:叶子结点记录的是普通索引列与主键的对应关系(不记录别的字段)。如果走了普通索引,但想要select走的索引之外的字段,那么在根据非聚簇......
  • MySQL----日期相关
    获取当前日期selectcurdate();结果: 2023-04-27获取当前日期为几号selectday(curdate())结果:27在当前日期上加上时间间隔selectDATE_ADD(curdate(),interval2day)结果:2023-04-29一、获取本月第一天selectDATE_ADD(curdate(),interval-day(curdate())+1day)--获取本......
  • spring boot jpa MYSQL教程mysql连接的空闲时间超过8小时后 MySQL自动断开该连接
     SunApr1608:15:36CST2023Therewasanunexpectederror(type=InternalServerError,status=500).PreparedStatementCallback;SQL[selectuserIdfromfamilyxiao_UserConnectionwhereproviderId=?andproviderUserId=?];Nooperationsallowedaftercon......
  • Informix杀掉死锁的方法和查看死锁的sql语句
    Informix锁表产生的原因,要么是多个用户同时访问数据库导致该问题,要么是因为某个进程死了以后资源未释放导致的。如果是前一种情况,可以考虑将数据库表的锁级别改为行锁,来减少撞锁的机会;或在应用程序中,用setlockmodewait3这样的语句,在撞锁后等待若干秒重试。如果是后一种情况......
  • Mysql查询父、子节点
    一、概述相信大家在实际的开发工程中,都会遇到需要依据当前节点,查询出其上级节点或下级节点的需求。下面就我在工作过程中的处理方式记录如下,如有片面之处,欢迎批评指正。二、示例表结构初始表数据如图:查看表结构和初始数据脚本DROPTABLEIFEXISTS`t_cfg_region`;CREATE......