Mybatis中insert、Update操作返回主键
How to get pk after operation of insert, update in mybatis?
两种方式
1. <insert id="insert" parameterType="User" keyProperty="id" >
java代码 调用insert(User u)后 u.getPK()就有值了
2. 不推荐,经测试,在SPRING事务环境中,永远返回1,因为在insert后,事务并没有提交所以。。。坑啊!
<insert id="insert" parameterType="com.wsmall.kalemao.dal.auth.dataobject.UserDo" > <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" > SELECT LAST_INSERT_ID() </selectKey> insert into User ... </insert >
java代码 pk = insert(User u)
相关推荐
在Mybatis中,`insertOrUpdate`操作是一种将数据插入数据库,如果存在相同的唯一标识则更新已有数据的方法。这种操作在数据库编程中非常实用,因为它允许开发者以简洁的方式处理增删改查(CRUD)操作。在MySQL中,...
首先,我们需要在MyBatis的Mapper接口中定义一个插入并返回主键ID的方法。这里我们以一个`UserDao`接口为例,定义一个`insertAndGetId`方法: ```java public interface UserDao { public int insertAndGetId(User...
在MyBatis中,添加操作返回的是记录数并非记录主键id。如果需要获取新添加记录的主键值,需要在执行添加操作之后,直接读取Java对象的主键属性。例如: ```java Integer rows = sqlSession.getMapper(UserMapper....
在MybatisPlus中,可以通过`BaseMapper`接口的`insert`或`insertOrUpdate`方法来实现数据插入。例如,如果我们有一个`User`实体类,我们可以这样做: ```java User user = new User(); user.setName("John"); user....
在"mybatis数据操作(增删改查+批量操作)"这个主题中,我们将深入探讨如何利用MyBatis进行基本的数据操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select),以及如何执行批量操作。...
查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...
Mybatis-plus的CRUD操作主要包括:insert、update、delete、select方法。insert方法用于添加数据,update方法用于更新数据,delete方法用于删除数据,select方法用于查询数据。 Mybatis-plus支持多种查询条件构造器...
而tk.mybatis则是MyBatis的扩展,提供了一些增强功能,便于在Spring Boot环境中使用MyBatis进行数据库操作。本教程将深入探讨如何在Spring Boot项目中集成tk.mybatis通用Mapper,实现高效的数据访问。 首先,我们...
在这个`mybatis`配置中,`YourDomainClass`的属性将被映射到对应的列,`insertOrUpdate`方法会处理插入或更新操作。 要注意的是,`ON DUPLICATE KEY UPDATE`依赖于存在合适的唯一索引或主键。如果没有定义,MySQL将...
MyBatis-Plus提供了自动化的CRUD操作,包括insert、insertBatch、selectOne、selectList、update、delete等方法,无需手动编写SQL。 6. **条件构造器(QueryWrapper)** QueryWrapper是MyBatis-Plus的核心组件之...
在上述代码中,如果仅依赖于`insert`操作返回的影响行数(即`result`)来判断是否成功,可能会导致错误。例如,如果所有插入尝试都因唯一键冲突而触发了更新,`result`始终为0,但实际操作已经完成。 批量插入时,`...
3. 执行SQL:调用SqlSession的方法,如selectOne、selectList、insert、update和delete,它们对应于SQL的CRUD操作。 4. 关闭资源:操作完成后,关闭SqlSession和SqlSessionFactory。 四、MyBatis注解使用 1. @...
本项目是基于Mybatis进行DAO(Data Access Object)层的CRUD(Create、Read、Update、Delete)操作的源码实现,结合了Spring框架,便于管理和集成事务。 在Mybatis中,CRUD操作主要通过Mapper接口和对应的XML配置...
通过 `<select>`, `<insert>`, `<update>`, `<delete>` 等标签编写 SQL,并通过 `<resultMap>` 定义字段映射关系。 4. **动态 SQL**:MyBatis 支持动态 SQL,使得 SQL 语句可以根据条件进行动态构建。例如,可以...
映射文件中,我们定义SQL语句(如SELECT、INSERT、UPDATE、DELETE),并使用resultMap来映射查询结果到Java对象。例如,我们可以定义一个查询用户信息的SQL,然后通过resultMap指定字段与对象属性的对应关系。 四、...
MyBatis 提供了多种常用标签,包括 bind 标签、select 标签、insert 标签、update 标签和 delete 标签等。 MyBatis 是一个功能强大且灵活的持久层框架,它提供了多种方式来交互数据库,允许开发者快速地开发数据库...
* keyColumn:仅对insert和update标签有效,此属性用于设置第几列是主键,当主键列不是表中的第一列时需要设置 * useGeneratedKeys:仅对insert和update标签有效,获取由数据库生产的主键,true/false
总结来说,要在MyBatis-Plus中利用Oracle Sequence生成主键,需完成数据库Sequence的创建、项目配置(包括JDBC驱动、数据源、全局配置)、实体类注解以及数据库操作。这样的设置确保了在插入新记录时,MyBatis-Plus...
当你在`INSERT`语句后添加`ON DUPLICATE KEY UPDATE`,如果新插入的行违反了唯一性约束,MySQL将执行指定的`UPDATE`操作。这里的“唯一性”指的是任何具有唯一索引或主键的列。例如,如果你有一个名为`consume_locus...