【MyBatis】关于MyBatis插入自动增长id的Bean到数据库后返回的id为null的解决办法

转载请注明出处http://blog.csdn.net/qq_26525215

本文源自大学之旅_谙忆的博客

解决办法其实很简单只需要为你的**.xml中的insert增加两个属性就可以了。
例如我的SponsorsMapper.xml中原来的代码如下:

<insert id="insertSelective" parameterType="com.uifuture.footer.entity.Sponsors">
    insert into sponsors
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >

上面的那个是有问题的也就是插入数据却无法返回插入数据后的id的值。

修改上面的代码如下:

 <insert id="insertSelective" parameterType="com.uifuture.footer.entity.Sponsors" useGeneratedKeys="true" keyProperty="id">
    insert into sponsors
    <trim prefix="(" suffix=")" suffixOverrides="," >

增加了useGeneratedKeys=”true” keyProperty=”id” 两个属性。

这样就解决了无法获得id问题。

本文章由[谙忆]编写 所有权利保留。
欢迎转载分享是进步的源泉。

转载请注明出处http://blog.csdn.net/qq_26525215

本文源自大学之旅_谙忆的博客

时间: 2024-07-31 04:39:19

【MyBatis】关于MyBatis插入自动增长id的Bean到数据库后返回的id为null的解决办法的相关文章

visual studio-用models生成数据库后怎么设id自动增长

问题描述 用models生成数据库后怎么设id自动增长 如何在vs2013 用models生成数据库后设id自动增长? 新人,没有C币!! 谢谢!! 解决方案 class 实体类 { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ID { get; set; } ... } 解决方案二: 设置字段属性为 auto-increase

mybatis中批量插入的两种方式(高效插入)_java

MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 一.mybiats foreach标签 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主

JSP中如何取得MSSQL数据库表中自动增长的ID主键值?

JSP中如何取得MSSQL数据库表中自动增长的ID主键值? 如:建一个表student有属性列userid,username其中userid为INT类型只读自动加1的主键(也就是每插入一条记录都会自动加1),那么如何在JSP中得到当前插入行的userid值(比如:我向表里插入了三条记录,在我插入第三条记录时userid的值应为3,那么如何得到这个3)? 先创建存储过程: CREATE PROCEDURE addrec   (   @OutID int output,   @Name varcha

oracle-Oracle中varchar2类型的id为自动增长

问题描述 Oracle中varchar2类型的id为自动增长 Oracle中id的类型为varchar2(10)主键,怎样创建自动增长的id 解决方案 可以的,使用序列 创建序列 create sequence SEQ_CEID minvalue 1 maxvalue 9999999999 start with 41 increment by 1 cache 20; 创建表,插入,查询 create table table_f ( id varchar(10) primary key, name

JdbcTemplate插入一条数据到Oracle数据库并返回自增长ID

问题描述 我的需求就是需要循环插入一组数据,因为数据库是按照自增长ID关联的,所以每插入一条数据,都要返回自增长的ID,用来设置关联关系,我用JdbcTemplate可以实现一组数据的插入并返回ID,但是循环两次以上就出错了:org.springframework.jdbc.UncategorizedSQLException:PreparedStatementCallback;uncategorizedSQLExceptionforSQL[insertintoT_METADATA_ABSTRAC

为什么,mybatis做批量插入用insert 标签 会报错 改为select 就正常?

问题描述 为什么,mybatis做批量插入用insert 标签 会报错 改为select 就正常? insert into report.tb_mgr_pt_user_config (USER_ID,IND_CODE,ORDER_ID) ( select #{item.userId,jdbcType=VARCHAR},#{item.indCode,jdbcType=VARCHAR},${item.id} from dual 这样就正常~~~否则一值报下面的错误 2015-09-12 04:13:

mybatis generator maven插件自动生成代码__个人记录

本文只是对于mybatis generator maven插件使用的个人记录,作个备忘,同时也希望对进来的人有所帮助! 一.pom文件中引入插件 此处我引用的是1.3.5版本的,主要是1.3.4 版本及以上可以设置Mapper(Dao)后缀 如mapperName="LotteryDao"  <plugin> <!-- 用maven mybatis插件 如果不在plugin里面添加依赖包得引用的话,会找不到相关得jar包, 在plugin外部得jar包,他不会去找到并

mybatis多线程批量插入MySQL报主键冲突

问题描述 mybatis多线程批量插入MySQL报主键冲突 insert into SMS_DOWN_HISTORY(templateCode,activityCode,activityId,sendRoundId,arrangeDate,expireDate,messageId,mobile,requestId,senderId,depName,depId,flag,level,smsTemplateVar,systemName,mtime,ctime) values (#{item.temp

在Mysql,SqlServer及Oracle中设置主键自动增长

1.把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id int auto_increment primary key not null, name varchar(15)); insert into customers(name) values("name1"),("name2"); select id from customers;