iteye_16444 2012-03-08 13:53
浏览 245
已采纳

mybatis3 mysql数据库管理系统的自动递增字段 如何获取

我测试了很多种配置方法都不能实现

1.我的数据库是mysql 配置insert语句

insert into users (id,name,rdate,age) values (#{id},#{name},#{rdate,jdbcType=INTEGER},#{age})

用mybatis执行 userDao.addUser(user)后
为什么user.getId还是为空
2.我的数据库是mysql 配置insert语句

insert into users (id,name,rdate,age) values (#{id},#{name},#{rdate,jdbcType=INTEGER},#{age})

SELECT @@IDENTITY AS id 或者 SELECT LAST_INSERT_ID()


用mybatis执行 userDao.addUser(user)后,为什么user.getId还是为空
并且SELECT @@IDENTITY AS id 或者 SELECT LAST_INSERT_ID() 没有被执行。
如何设置为 order="BEFORE" 会执行,但是会包主键重复

日志如下

[DEBUG][2012-03-08 14:14:17,924][java.sql.Connection]ooo Connection Opened
[DEBUG][2012-03-08 14:14:17,955][org.mybatis.spring.SqlSessionUtils]Registering transaction synchronization for SqlSession
[DEBUG][2012-03-08 14:14:18,127][jdbc.audit]2. PreparedStatement.new PreparedStatement returned org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:255)
[DEBUG][2012-03-08 14:14:18,127][jdbc.audit]2. Connection.prepareStatement(insert into users (id,name,rdate,age) values (?,?,?,?)) returned net.sf.log4jdbc.PreparedStatementSpy@857066 org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:255)
[DEBUG][2012-03-08 14:14:18,158][jdbc.audit]2. PreparedStatement.setQueryTimeout(25000) returned org.apache.commons.dbcp.DelegatingStatement.setQueryTimeout(DelegatingStatement.java:249)
[DEBUG][2012-03-08 14:14:18,158][jdbc.audit]2. PreparedStatement.setNull(1, 1111) returned org.apache.commons.dbcp.DelegatingPreparedStatement.setNull(DelegatingPreparedStatement.java:105)
[DEBUG][2012-03-08 14:14:18,158][jdbc.audit]2. PreparedStatement.setString(2, "2") returned org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
[DEBUG][2012-03-08 14:14:18,158][jdbc.audit]2. PreparedStatement.setLong(3, 1331187257) returned org.apache.commons.dbcp.DelegatingPreparedStatement.setLong(DelegatingPreparedStatement.java:120)
[DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. PreparedStatement.setInt(4, 1) returned org.apache.commons.dbcp.DelegatingPreparedStatement.setInt(DelegatingPreparedStatement.java:117)
[DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. PreparedStatement.addBatch() returned org.apache.commons.dbcp.DelegatingPreparedStatement.addBatch(DelegatingPreparedStatement.java:172)
-2147482646
null
[DEBUG][2012-03-08 14:14:18,174][org.springframework.jdbc.datasource.DataSourceTransactionManager]Initiating transaction commit
[DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. Connection.isClosed() returned false org.apache.commons.dbcp.DelegatingConnection.toString(DelegatingConnection.java:95)
[DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. Connection.getMetaData() returned com.mysql.jdbc.DatabaseMetaData@fb1135 org.apache.commons.dbcp.DelegatingConnection.toString(DelegatingConnection.java:99)
[DEBUG][2012-03-08 14:14:18,174][org.springframework.jdbc.datasource.DataSourceTransactionManager]Committing JDBC transaction on Connection [jdbc:mysql://127.0.0.1:3306/sdsp?useUnicode=true&characterEncoding=utf-8, UserName=root@localhost, MySQL-AB JDBC Driver]
[DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. Connection.commit() returned org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:308)
[DEBUG][2012-03-08 14:14:18,174][jdbc.sqlonly] org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
2. batching 1 statements: 1: insert into users (id,name,rdate,age) values (NULL,'2',1331187257,1)

[DEBUG][2012-03-08 14:14:18,174][jdbc.sqltiming] org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
2. batching 1 statements: 1: insert into users (id,name,rdate,age) values (NULL,'2',1331187257,1)
{executed in 0 msec}
[DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. PreparedStatement.executeBatch() returned [I@1e3e7d2 org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
[DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. PreparedStatement.close() returned org.apache.commons.dbcp.DelegatingStatement.close(DelegatingStatement.java:168)
[DEBUG][2012-03-08 14:14:18,190][org.mybatis.spring.SqlSessionUtils]Transaction synchronization committed SqlSession
[DEBUG][2012-03-08 14:14:18,190][org.mybatis.spring.SqlSessionUtils]Transaction synchronization closed SqlSession
[DEBUG][2012-03-08 14:14:18,440][jdbc.audit]2. Connection.setAutoCommit(true) returned org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:338)
[DEBUG][2012-03-08 14:14:18,440][jdbc.audit]2. Connection.isReadOnly() returned false org.apache.commons.dbcp.DelegatingConnection.isReadOnly(DelegatingConnection.java:329)
[DEBUG][2012-03-08 14:14:18,440][jdbc.audit]2. Connection.isClosed() returned false org.apache.commons.dbcp.DelegatingConnection.toString(DelegatingConnection.java:95)
[DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.getMetaData() returned com.mysql.jdbc.DatabaseMetaData@1a81bd5 org.apache.commons.dbcp.DelegatingConnection.toString(DelegatingConnection.java:99)
[DEBUG][2012-03-08 14:14:18,455][org.springframework.jdbc.datasource.DataSourceTransactionManager]Releasing JDBC Connection [jdbc:mysql://127.0.0.1:3306/sdsp?useUnicode=true&characterEncoding=utf-8, UserName=root@localhost, MySQL-AB JDBC Driver] after transaction
[DEBUG][2012-03-08 14:14:18,455][org.springframework.jdbc.datasource.DataSourceUtils]Returning JDBC Connection to DataSource
[DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.isClosed() returned false org.apache.commons.dbcp.DelegatingConnection.isClosed(DelegatingConnection.java:353)
[DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.getAutoCommit() returned true org.apache.commons.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:311)
[DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.clearWarnings() returned org.apache.commons.dbcp.DelegatingConnection.clearWarnings(DelegatingConnection.java:305)
[DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.getAutoCommit() returned true org.apache.commons.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:311)
[DEBUG][2012-03-08 14:14:18,502][org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor]Written [Hello world! ] as "text/html" using [org.springframework.http.converter.StringHttpMessageConverter@14a616]

  • 写回答

2条回答 默认 最新

  • iteye_8576 2012-03-08 15:56
    关注

    我设置mybatis事务自动提交,你提交事务了?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮