首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ‍面试官问:Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗? ‍我:看我回答...

    一、Mybatis执行插入语句后可以返回主键ID吗? 在想写什么内容的时候,正好看到一个基础面试题上有这个问题,就把它记录下来了。 ‍面试官:你说Mybatis执行插入语句后可以返回主键ID吗??...keyProperty属性,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中,也就是你实体类中,对应数据库的主键id。...最后在实体类中,要有主键的get与set方法,满足后,在impl层controller层,直接实体类.getId() 即可获取本次插入后的主键ID,返回前端即可。...一步一步道来: 可以直接使用Mybatis-Plus的sava方法,或者mapper层的insert方法,它都会将返回的结果自动填充进你映射的的实体类。从而可以直接获取到你的数据。...祝 我们:待别日相见时,都已有所成。

    3.7K20

    MyBatis中主键回填的两种实现方式

    JDBC 中实现主键回填其实非常容易,主要是在构造 PreparedStatement 时指定需要主键回填,然后在插入成功后,查询刚刚插入数据的 id ,示例代码如下: public int insert...在更新操作执行完成之后,调用 getGeneratedKeys ,然后又会获取到一个 ResultSet 对象,从这个游标集中就可以获取到刚刚插入数据的id。...框架写法 一般情况下,主键有两种生成方式: 主键自增长 自定义主键(一般可以使用UUID,或者类UUID) 如果是第二种,主键一般是在Java代码中生成,然后传入数据库执行插入操作,如果是第一个主键自增长...MyBatis 的基本用法就无需多说了,这也不是本文的重点,我们还是来看看 MyBatis 中主键回填的两种不同实现方式吧!...松哥推荐大家使用这种方式,原因很简单,这种方式实现简便省事。

    1.3K30

    Java小白学习MyBatis:Mybatis如何获取自动生成的(主)键值?

    在MyBatis这样的持久层框架中,经常需要插入一条记录并取得该记录所对应的主键值。...在Java开发中,默认的JDBC方式已经较为成熟地解决了这个问题,可以通过getGeneratedKeys()方法获取自动生成的主键值,而在MyBatis中,也提供了多种方式来处理自动生成主键值的问题。...一、使用元素 MyBatis 提供了元素来获取主键值。...2、在插入记录后需要立即获得其主键值时,可以使用方式;如果只是需要将主键值设置到Java对象中,可以使用useGeneratedKeys属性,这样可以避免一次额外的查询操作。...3、有的数据库对于SELECT LAST_INSERT_ID()仅支持由INSERT触发而产生的自增长ID,因此在使用该方式时,需先进行插入操作才能够正确获取主键值。

    2.3K30

    Data Access 之 MyBatis(三) - SQL Mapping XML(Part A)

    useGeneratedKeys (仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL...keyProperty (仅适用于 insert 和 update)指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey...获取自增主键的值 数据存储在支持自增主键的数据库中,如何获取数据插入成功后数据库生成的主键值?...null,MyBatis是如何获取自增主键的值的?...调用了Statement接口中的getGenerateKeys()方法,获取数据库自动生成的主键值,然后赋值给keyProperty属性指定的实体类属性 获取非自增主键的值 对于不支持自定生成主键的数据库如

    1.1K10

    Mybatis 中的主键返回

    email,info,create_time) values(#{userName},#{password},#{email},#{info},#{createTime}) 使用...useGeneratedKeys设置为true后 , MyBatis会使用JDBC的getGeneratedKeys方法取出由数据库内部生成的主键 ....当需要设置多个属性时 , 使用逗号隔开 , 这种情况下 还需要配置 keyColumn属性 , 按顺序指定数据库的列 , 这里列的值会和 keyProperty 配置的属性一一对应 ....由于要使用数据库返回的主键值 , 所以SQL上下两部分的列中去掉了 id 列和对于的 #{id} 属性 返回非自增主键 采用标签获取主键的值 , 这种方式对提供和不提供主键自增功能的数据库同样适用...和上面useGeneratedKeys的用法和含义一样 , 这里的resultType用于设置返回值类型. order 属性和数据库相关 , 在MYSQL 中 , order是AFTER , 因为当前及记录的主键值在

    1.4K20

    MyBatis之Mapper XML 文件详解(一)

    内联参数是首选,这个元素可能在将来被移除,这里不会记录。 sql – 可被其他语句引用的可重用语句块。...对每个插入、更新或删除操作,通常对应多个查询操作。这是 MyBatis 的基本原则之一,也是将焦点和努力放到查询和结果映射的原因。简单查询的 select 元素是非常简单的。...这就使得在获取嵌套的结果集的时候不至于导致内存不够用。默认值:false。...useGeneratedKeys:(仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像...对于不支持自动生成类型的数据库或可能不支持自动生成主键 JDBC 驱动来说,MyBatis 有另外一种方法来生成主键。

    1.8K60

    【MyBatis】实现数据库的增、删、改、查

    属性 来获取 返回主键 Insert 语句默认返回的是受影响的行数,但是有些情况下,数据插入之后,还需要有后续的关联操作,需要获取到新插入数据的 id 比如订单系统 当我们下单之后,需要通知物流系统、库存系统...使用 JDBC 的 getGeneratedKeys 方法取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段),默认值:false keyProperty...:指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认值:未设置(unset) 测试数据:...:"+userInfoMapper.update(userInfo)); } 查(Select) 我们在上面查询时发现,有几个字段是没有赋值的,只有 Java 对象属性和数据库字段一模一样时,才会进行赋值...UserInfo 接收,MyBatis 执行就会报错 原因分析: 当自动映射查询结果时,MyBatis 会获取结果中返回的列名,并在 Java 类中查找相同名字的属性(忽略大小写) 这意味着如果发现了

    35510

    Spring boot Mybatis-XML方式通用Mapper插件(七)

    以上版本 @MapperScan 注解,请使用 tk.mybatis.spring.annotation.MapperScan 注解。...使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段)。.... 6.建议一定是有一个@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键. 7.默认情况下,实体类中如果不存在包含@Id注解的字段,所有的字段都会作为主键字段进行使用(这种效率极低)....8.实体类可以继承使用,可以参考测试代码中的tk.mybatis.mapper.model.UserLogin2类. 9.由于基本类型,如int作为实体类字段时会有默认值0,而且无法消除,所以实体类中建议不要使用基本类型...使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段) 2.

    3.8K10

    MyBatis-04 MyBatis XML方式之insert元素

    如果设置为true , MyBatis会使用JDBC的getGeneratedKeys方法取出由数据库内部生成的主键 keyProperty: MyBatis通过getGeneratedKeys获取组建后要将辅助的属性名...JDCB方式返回主键自增的值 在使用主键自增(比如MySql 、SQLServer数据库)时,插入数据库后可以需要得到自增的主键值,然后使用这个值进行一些其他的操作。...会使用JDBC的getGeneratedKeys方法来取由数据库内部生成的主键。...对应这种情况,可以使用 selectKey标签来获取主键的值,这种方式不仅使用不提供主键自增功能的数据库,同时也适用于提供主键自增功能的数据库 1.UserMapper接口增加接口方法 // 演示使用selectKey...因为当前记录的主键值是在insert语句执行成功后才获取到的。

    2K20

    mapper

    -- 7. useGeneratedKeys (可选配置, 默认为false)           (仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys...唯一需要说明的就是元素里面的useGeneratedKeys和keyProperties属性,这两个属性是用来获取数据库中的主键的。...在数据库里面经常性的会给数据库表设置一个自增长的列作为主键,如果我们操作数据库后希望能够获取这个主键该怎么弄呢?...MyBatis 通常可以推算出来,但是为了更加确定写上也不会有什么问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。...=-1的数据才能进行status更新.其他的将使用默认值更新,而不会保持原数据不变.如果要保持原数据不变呢?

    89050

    MyBatis从入门到多表关联

    特有属性: 属性 描述 keyProperty (仅适用于 insert 和 update)指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert...useGeneratedKeys (仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL...: 数据库不支持主键自动增长(Oracle),或者支持增长的数据库取消了主键自动增长时,使用另一种方式。...元素会首先运行,会通过自定义的语句来设置数据表中的主键(如果表中没有记录,则设置为1,否则就将id值+1,来作为新的主键),然后再调用插入语句。...当使用可迭代对象时:index是当前迭代的次数,item值是本次迭代获取的元素。 当使用字段(或Map.Entry对象的集合时):index是键,item是值。

    90320

    Mybatis映射器之insert-update-delete

    ,不能和keyColumn同时使用 联合主键可以用逗号隔开 useGeneratedKeys 这会令Myabatis使用JDBC的getGeneratedKeys方法来取出有数据库内部生成的主键,例如mysql...取值为true/false,默认为false keyColumn 指明第几列是主键,不能和keyProperty共同使用,只能接受整形参数 联合主键可以用逗号分割 lang 自定义语言,可使用第三方语言...,使用较少 - 主键回填和自定义 现实中,数据表可能拥有自增字段,或者我们需要给一个字段插入特定值,而mybatis提供了实现的方法。...首先可以用keyProperty属性指定哪个是主键字段,同时使用useGeneratedKeys属性告诉mybatis这个主键是否使用数据库内置策略生成。...这里我们举两个例子,一个是使用mysql的自增功能,另一个是通过sql设置主键。 这个例子代码文件格式和Mybatis映射器之insert,完整代码参考这篇文章。

    1.3K20
    领券