jdbc:mysql和oracle插入一条数据返回主键
2014-08-05 21:28
453 查看
package org.sin.common.dao; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import oracle.jdbc.OracleTypes; import org.sin.domain.User; public class JDBCDao { private static boolean mysql = false; private Connection conn; static { try { if (mysql) { Class.forName("com.mysql.jdbc.Driver"); } else { Class.forName("oracle.jdbc.driver.OracleDriver"); } } catch (ClassNotFoundException e) { e.printStackTrace(); } } private JDBCDao() { String url, user, password; if (mysql) { url = "jdbc:mysql://127.0.0.1:3306/cl"; user = "root"; password = ""; } else { url = "jdbc:oracle:thin:@localhost:1521:orcl"; user = "andy"; password = "root"; } try { conn = DriverManager.getConnection(url, user, password); System.out.println(conn.getAutoCommit()); } catch (SQLException e) { e.printStackTrace(); } } private User SaveUser(User user) { String sql = "insert into t_User(id,username,password) values(user_id.nextval,?,?)"; Long id = -1L; try { conn.setAutoCommit(false); PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); int i = 0; for (i = 0; i < 10000; i++) { ps.setString(1, user.getUsername() + "-" + i); ps.setString(2, user.getPassword() + "-" + i); ps.executeUpdate(); ResultSet rs = ps.getGeneratedKeys(); while (rs.next()) { id = rs.getLong(1); System.out.println(">>>>>>>" + id); } } conn.commit(); } catch (SQLException e) { e.printStackTrace(); } user.setId(id); return user; } private User SaveUser2(User user) { String sql = "BEGIN insert into t_user(id,username,password) values(user_id.nextval,?,?) returning id into ?; END;"; Long id = -1L; try { conn.setAutoCommit(false); CallableStatement cs = conn.prepareCall(sql); for(int i=0;i<10000;i++){ cs.setString(1, user.getUsername() + "-" + i); cs.setString(2, user.getPassword() + "-" + i); cs.registerOutParameter(3, OracleTypes.NUMBER); cs.execute(); id = cs.getLong(3); } conn.commit(); } catch (SQLException e) { e.printStackTrace(); } user.setId(id); return user; } public static void main(String[] args) { JDBCDao dao = new JDBCDao(); Long start = System.currentTimeMillis(); User u = new User("andy", "andypwd"); dao.SaveUser2(u); Long end = System.currentTimeMillis(); System.out.println(u.getId() + "--" + u.getUsername()); Long k = end - start; System.out.println("消耗:" + k); } }
本文出自 “天空海阔” 博客,请务必保留此出处http://ether007.blog.51cto.com/8912105/1536121
相关文章推荐
- 【MyBatis框架点滴】——mybatis插入数据返回主键(mysql、oracle)
- MyBatis与Oracle,MySql,SqlServer插入数据返回主键方式
- jdbc-mysql基础 ResultSet getGeneratedKeys 插入一条字段并返回其主键
- MyBatis框架——mybatis插入数据返回主键(mysql、oracle)
- MyBatis框架——mybatis插入数据返回主键(mysql、oracle)
- MyBatis框架——mybatis插入数据返回主键(mysql、oracle)
- mysql+mybatis插入一条数据后返回主键ID
- oracle插入返回主键&&根据时间获取最新的一条数据
- JDBC Insert语句插入Oracle数据库返回数据主键
- 转摘 JDBC 插入数据返回数据主键
- 在基于Mybatis持久层框架,使用数据库事务时,插入一条数据后,无法返回主键ID的问题研究
- oracle中插入一条数据并且返回该条数据的id
- mybatis+mysql返回插入数据主键
- Mybatis插入一条数据后返回刚插入数据主键
- spring mvc 插入一条数据 返回该数据的主键编号
- MySql insert一条数据时使用自增主键,并在返回对象中给ID赋值
- mysql插入一条数据,返回其对应的id
- ASP.NET 往oracle插入一条数据并返回ID
- MyBatis在Oracle中插入数据并返回主键的问题解决
- JDBC 插入数据返回数据主键