资讯专栏INFORMATION COLUMN

关于在Mybatis和Mapper下的Postgresql自增主键Insert后取值的问题

iliyaku / 3169人阅读

摘要:传统的形式如果用注解的话,特别是选择的话,可能对的自增主键支持并不好。只需要稍一下即可支持对于袁贵对于,在生成动态时,忽略字段,然后就会自动取值数据库里的类型的值以上代码在下测试通过

传统的xml形式

</>复制代码

  1. insert into hxc.user_bank_account (bank_account, fund_id, validity_period,
  2. deleted, bank_id, full_name,
  3. is_default, deposit_bank, province,
  4. city)
  5. values (#{bankAccount,jdbcType=VARCHAR}, #{fundId,jdbcType=BIGINT}, #{validityPeriod,jdbcType=DATE},
  6. #{deleted,jdbcType=INTEGER}, #{bankId,jdbcType=INTEGER}, #{fullName,jdbcType=VARCHAR},
  7. #{isDefault,jdbcType=INTEGER}, #{depositBank,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR},
  8. #{city,jdbcType=VARCHAR})

如果用注解的话,特别是选择tk.mybatis.mapper的话,可能对POSTGRESQL的自增主键支持并不好。只需要稍buff一下即可支持
对于mapper

</>复制代码

  1. /**
  2. * DAO of `sms_send_result`
  3. *
  4. * @author 袁贵
  5. * @version 1.0
  6. * @since 1.0
  7. */
  8. public interface SmsSendResultMapper extends Mapper {
  9. @InsertProvider(type = BaseInsertProvider.class, method = "dynamicSQL")
  10. @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
  11. @Override
  12. int insertSelective(SmsSendResult record);
  13. @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
  14. @InsertProvider(type = BaseInsertProvider.class, method = "dynamicSQL")
  15. @Override
  16. int insert(SmsSendResult record);
  17. }

对于entity,在生成insert动态SQL时,忽略ID字段,然后就会自动取值数据库里的bigserial类型的ID值

</>复制代码

  1. @Table(name = "sms_send_result", schema = "sms")
  2. public class SmsSendResult {
  3. /**
  4. * This field was generated by MyBatis Generator.
  5. * This field corresponds to the database column sms.sms_send_result.id
  6. *
  7. * @mbggenerated
  8. */
  9. @Id
  10. @Column(insertable = false)
  11. private Long id;
  12. /**
  13. * This field was generated by MyBatis Generator.
  14. * This field corresponds to the database column sms.sms_send_result.telephone
  15. *
  16. * @mbggenerated
  17. */
  18. private String telephone;
  19. .....
  20. }

以上代码在mybatis3.4.5+mapper3.4.5下测试通过

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38988.html

相关文章

  • Mybatis基本映射--INSERT

    摘要:概述本章学习基本映射相关知识点。表示执行该语句将清空一级二级缓存,默认为。赋值主键的字段名,即把数据库内部生产的主键赋值给该字段。 概述 本章学习Mysql基本映射--INSERT相关知识点。insert的用法比select要简单很多。 本系列文章是基于Mybatis 3.4.6 版本,数据库使用的是Mysql 5.7。 INSERT标签 insert标签常用属性: id:可以理解为...

    csRyan 评论0 收藏0
  • Mybatis学习笔记(一)——基本CRUD操作

    摘要:将语句硬编码到代码中,修改语句需要重新编译代码设想使用配置文件配置。从结果集中遍历数据的时候存在硬编码。表示一个拼接符号,会引用注入,所以不建议使用。和表示查询出一条记录进行映射。 MyBatis是什么 mybatis是托管在github上的ORM框架,让程序员将主要精力放在SQL上,通过mybatis提供映射方式,自由灵活(SQL的可定制性较高,半自动化)生成满足需求的SQL语句。m...

    evin2016 评论0 收藏0
  • 通过项目逐步深入了解Mybatis<一>

    摘要:解决方法使用数据库连接池管理数据库连接。向中设置参数,对占位符号位置和设置参数值,硬编码在代码中,同样也不利于系统的维护。从中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。 Mybatis Mybatis 和 SpringMVC 通过订单商品案例驱动 官方中文地址:http://www.mybatis.org/mybati... 官方托管地址:https://...

    2bdenny 评论0 收藏0
  • Mybatis【配置文件】就是这么简单

    摘要:场合常见一些明细记录的展示,将关联查询信息全部展示在页面时,此时可直接使用将每一条记录映射到中,在前端页面遍历中是即可。如果查询单表就可以满足需求,一开始先查询单表,当需要关联信息时,再关联查询,当需要关联信息再查询这个叫延迟加载。 配置文件和映射文件还有挺多的属性我还没有讲的,现在就把它们一一补全 映射文件 在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装...

    freewolf 评论0 收藏0
  • Mybatis常见面试题

    摘要:执行没有,批处理不支持,将所有都添加到批处理中,等待统一执行,它缓存了多个对象,每个对象都是完毕后,等待逐一执行批处理。 Mybatis常见面试题 #{}和${}的区别是什么? #{}和${}的区别是什么? 在Mybatis中,有两种占位符 #{}解析传递进来的参数数据 ${}对传递进来的参数原样拼接在SQL中 #{}是预编译处理,${}是字符串替换。 使用#{}可以有效的防止...

    liuchengxu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<