zoukankan      html  css  js  c++  java
  • JDBC插入数据,获取自增长值

    package com.loaderman.demo.c_auto;
    
    public class Dept {
    
        private int id;
        private String deptName;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getDeptName() {
            return deptName;
        }
        public void setDeptName(String deptName) {
            this.deptName = deptName;
        }
        
        
    }
    package com.loaderman.demo.c_auto;
    
    public class Employee {
    
        private int empId;
        private String empName;
        // 关联的部门
        private Dept dept;
        
        
        public Dept getDept() {
            return dept;
        }
        public void setDept(Dept dept) {
            this.dept = dept;
        }
        public int getEmpId() {
            return empId;
        }
        public void setEmpId(int empId) {
            this.empId = empId;
        }
        public String getEmpName() {
            return empName;
        }
        public void setEmpName(String empName) {
            this.empName = empName;
        }
        
        
        
        
    }
    package com.loaderman.demo.c_auto;
    
    import com.loaderman.demo.utils.JdbcUtil;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    
    
    public class EmpDao {
    
        private Connection con;
        private PreparedStatement pstmt;
        private ResultSet rs;
    
        // 保存员工,同时保存关联的部门
        public void save(Employee emp){
    
            // 保存部门
            String sql_dept = "insert into dept(deptName) values(?)";
            // 保存员工
            String sql_emp = "INSERT INTO employee (empName,dept_id) VALUES (?,?)";
            // 部门id
            int deptId = 0;
    
            try {
                // 连接
                con = JdbcUtil.getConnection();
    
                /*****保存部门,获取自增长*******/
                // 【一、需要指定返回自增长标记】
                pstmt = con.prepareStatement(sql_dept,Statement.RETURN_GENERATED_KEYS);
                // 设置参数
                pstmt.setString(1, emp.getDept().getDeptName());
                // 执行
                pstmt.executeUpdate();
    
                // 【二、获取上面保存的部门子增长的主键】
                rs =  pstmt.getGeneratedKeys();
                // 得到返回的自增长字段
                if (rs.next()) {
                    deptId = rs.getInt(1);
                }
    
                /*****保存员工*********/
                pstmt = con.prepareStatement(sql_emp);
                // 设置参数
                pstmt.setString(1, emp.getEmpName());
                pstmt.setInt(2, deptId);
                pstmt.executeUpdate();
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JdbcUtil.closeAll(con, pstmt, rs);
            }
        }
    }
    package com.loaderman.demo.c_auto;
    
    import org.junit.Test;
    
    public class App {
    
    
        // 保存员工
        @Test
        public void testSave() throws Exception {
            // 模拟数据
            Dept d = new Dept();
            d.setDeptName("应用开发部");
            Employee emp = new Employee();
            emp.setEmpName("李俊杰");
            emp.setDept(d);   // 关联
    
            // 调用dao保存
            EmpDao empDao = new EmpDao();
            empDao.save(emp);
    
        }
    }

    思路:保存员工及其对应的部门

             步骤:

    1. 先保存部门
    2. 再得到部门主键,再保存员工
  • 相关阅读:
    计算器算法的简单实现
    [备忘]如何在Asp.net MVC,非Controller中获取当前Request,Session,Response等请求信息
    [Easy UI ]DataGrid 首次进入页面时,不加载任何数据
    使用Hyperv搭建oracle11gR2 RAC过程中遇到问题记录
    Win oracle10g 不同目录rman恢复记录
    ORACLE RAC 日常管理[10g,11g]
    win2008 11gRAC 环境 安装步骤记录 【前期配置简略】
    本地登录和远程登陆总结[oracle ,资料收集于网络]
    Oracle10g RAC 修改IP [转载]
    安装DNS Server linux 【转载】
  • 原文地址:https://www.cnblogs.com/loaderman/p/10007834.html
Copyright © 2011-2022 走看看