mybatis使用注解方式插入数据后获取自增长的主键值
来源:互联网 发布:南京软件谷绿皮火车 编辑:程序博客网 时间:2024/06/05 08:02
mybatis使用注解方式插入数据后获取自增长的主键值
Mybatis使用:Sql Annotation
mybatis本身提供的注解
插入
插入的使用注解
获取自增id的方式有
INSERT INTO table_name (col1, col2,…) VALUES (‘val1’, ‘val2’…);
1. SELECT LAST_INSERT_ID();
2. SELECT @@IDENTITY
3. SELECT MAX(id)
……
应用情景
- 写SQL,但不要自己插入主键值,插入数据后获取自增长的主键值
- 配置@Options(useGeneratedKeys=true, keyProperty=”对象.属性”)
这个的作用是设置是否使用JDBC的getGenereatedKeys()方法获取主键并赋值到keyProperty设置的对象的属性中,
插入一条记录后,还想得到这条记录的自增主键ID,useGeneratedKeys=true就是定义数据库返回主键ID的。
也就是说把自增长的主键值赋值给对象相应的属性
@Insert("INSERT INTO `wx_act` (`name`, `modelId`, `image`) VALUES (#{name}, #{modelId}, #{image})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int saveMoonCoke(MidAutumn midAutumn);
- 在插入后,使用对象.主键属性的getXXId()方法 获取刚刚插进去的主键值
- 这个方法返回的内容是insert的影响的行数
例子
System.out.println("Before inserting ... " + moonCoke.getId()); MidAutumn moonCoke = new MidAutumn(); moonCoke.setName(name); moonCoke.setModelId(modelId); moonCoke.setImage(photoUrl); int effectRow = midautumnService.saveMoonCoke(moonCoke); System.out.println("effect row ... " + effectRow); System.out.println("After inserting ... " + moonCoke.getId());
Options的其他选项
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface Options { boolean useCache() default true; boolean flushCache() default false; ResultSetType resultSetType() default ResultSetType.FORWARD_ONLY; StatementType statementType() default StatementType.PREPARED; int fetchSize() default -1; int timeout() default -1; boolean useGeneratedKeys() default false; String keyProperty() default "id"; String keyColumn() default ""; }
对于这些属性,还是比较好理解的,如useCache、flushCache、timeout等。
其中跟主键返回功能相关的属性就是useGeneratedKeys、keyProperty、keyColumn这三个。
对于Options的使用,根据官方文档有个特别重要的注意点:
**
once you engage the Options annotation, your statement is subject to all of the default values.
**
如果你使用了这个属性,SQL的执行就会使用Options的默认值,如果你没有重新定义的话。仔细看下keyColumn的默认值是空,这个如果和你数据库设定不一致的话,就会出问题;所以一旦决定使用主键返回功能,推荐同时使用useGeneratedKeys、keyProperty、keyColumn这三个属性
阅读全文
0 0
- 【亲测】mybatis使用注解方式插入数据后获取自增长的主键值
- MyBatis使用注解方式插入数据后获取自增长的主键值
- mybatis使用注解方式插入数据后获取自增长的主键值
- C#连接mysql数据库插入数据后获取自增长主键ID值
- SQLite 获取最新插入数据的自增长主键ID
- MyBatis获取自增长主键值的两种方式及源码浅析
- myBatis+mysql获取插入数据的自增长id
- MyBatis之自增长主键值获取
- 表主键自增长Mybatis插入数据报错
- Mybatis+MySql 插入数据后返回自增主键值
- 使用mybatis 实现批量插入,主键自增长
- ibatis 插入数据主键依赖数据库自增长方式
- MyBatis获取插入记录的自增长字段值
- MyBatis获取插入记录的自增长字段值
- MyBatis获取插入记录的自增长字段值
- MyBatis获取插入记录的自增长字段值
- MyBatis获取插入记录的 id 自增长字段值
- MyBatis获取插入记录的自增长字段值
- 文章标题
- 进程管理
- OpenCV学习笔记(一)
- java的线程安全、单例模式、JVM内存结构等知识学习和整理
- mysql启动和redis 启动注意事项
- mybatis使用注解方式插入数据后获取自增长的主键值
- PHP底层工作原理
- Java开发中的23种设计模式详解
- javascript中的闭包问题
- 分享一个Android内存泄漏相关的自动测试脚本
- android基于PullToRefreshListView 的支持嵌套滚动的下拉刷新实现--PullToRefreshAttacher
- 虚幻4中的程序化生成【2】程序化生成藤曼
- springboot学习
- ajax中文乱码问题的总结