千家信息网

jdbc:mysql和oracle插入一条数据返回主键

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,package org.sin.common.dao;import java.sql.CallableStatement;import java.sql.Connection;import java.
千家信息网最后更新 2024年11月11日jdbc:mysql和oracle插入一条数据返回主键
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);        }}


0