如何在Spring中编写一个查询,将记录插入到Mysql数据库的2个表中

我想编写一个查询将数据插入两个表中。

我将数据插入到两个表中,称为Usercompany。 User有外键company _id。表结构如下

用户表

  • int user_id;(AI)

  • int 公司_id;(外键)

  • 字符串用户名;

  • 字符串 user_email;

公司表

  • int company_id;(AI)

  • 字符串公司名称;

-

void insert(String user){

    String query="insert into user(user_name,user_email,company_id,company_name) values

    (variable,variable, variable, variable)";

    //code to map using put method

}

我收到错误


company_id cannot be null.


DIEA
浏览 71回答 1
1回答

慕姐8265434

由于外键company_id不能是null,公司必须存在于数据库中,并且在插入用户之前必须知道它的 id。更新要插入新用户,您需要:用户名电子邮件地址公司名称我们首先需要搜索company_id给定的公司名称。如果在数据库中找不到该公司,则会插入一个新公司。public void insertUser(String userName, String userEmail, String companyName)        throws SQLException {    int companyId = getOrInsertCompany(companyName);    try (PreparedStatement stmt = cnt.prepareStatement(            "insert into User(company_id,user_name,user_email)"            + " values(?,?,?)")) {        stmt.setInt(1, companyId);        stmt.setString(1, userName);        stmt.setString(1, userEmail);        stmt.executeUpdate();    }}private int getOrInsertCompany(String companyName) throws SQLException {    try (PreparedStatement stmt = cnt.prepareStatement(            "select company_id from Company where company_name=?")) {        stmt.setString(1, companyName);        try (ResultSet rs = stmt.executeQuery()) {            if (rs.next()) {                return rs.getInt(1);            }        }    }    // the company was not found; insert it    try (PreparedStatement stmt = cnt.prepareStatement(            "insert into Company(company_name) values(?)")) {        stmt.setString(1, companyName);        stmt.execute();        try (ResultSet rs = stmt.getGeneratedKeys()) {            if (!rs.next()) {                throw new SQLException(                        "Could not get generated keys");            }            return rs.getInt(1);        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java