java - 如何使用spring jdbc在mysql中插入外键

标签 java mysql datasource foreign-key-relationship spring-jdbc

所以目前以下代码可以工作并从我的 java 应用程序插入到 mysql 中:

String sql = "INSERT INTO location(address1, address2, postcode, town)";
sql+= "VALUES(:address1, :address2, :postcode, :town)";

Map parameters = new HashMap();
parameters.put("address1", location.getAddress1());
parameters.put("address2", location.getAddress2());
parameters.put("postcode", location.getPostCode());
parameters.put("town", location.getTown());

this.namedParameterJdbcTemplate.update(sql, parameters);

但是,我不确定如何在位置表中添加“类型”列。此列/属性与另一个名为 location_type 的表相关。所以如果我要通过 mysql 代码插入它,我会这样做

INSERT INTO location(address1, address2, postcode, town, type)
VALUES("2","abc street","ab1 1cd", "nice town", (SELECT id FROM location_type WHERE type="main")  ) 

我将如何从 Java 应用程序执行此操作?

最佳答案

您可以在 Java 应用程序中以相同的方式执行此操作:

String sql = "INSERT INTO location(address1, address2, postcode, town, type)";
             + " VALUES (:address1, :address2, :postcode, :town,"
                           + " (SELECT id FROM location_type WHERE type='main'))";

Map parameters = new HashMap();
parameters.put("address1", address1);
parameters.put("address2", address2);
parameters.put("postcode", postcode);
parameters.put("town", town);

this.namedParameterJdbcTemplate.update(sql, parameters);

数据库没有理由接受来自命令行的 SQL 查询并拒绝来自 Java 应用程序的查询。

如果上面的硬编码 main 实际上是另一个参数,您可以将其设置为与所有其他参数相同的方式:

String sql = "INSERT INTO location(address1, address2, postcode, town, type)";
             + " VALUES (:address1, :address2, :postcode, :town,"
                           + " (SELECT id FROM location_type WHERE type= : type))";

Map parameters = new HashMap();
parameters.put("address1", address1);
parameters.put("address2", address2);
parameters.put("postcode", postcode);
parameters.put("town", town);
parameters.put("type", type);

this.namedParameterJdbcTemplate.update(sql, parameters);

关于java - 如何使用spring jdbc在mysql中插入外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21786943/

相关文章:

java - JFreechart - XYChart 上的垂直 X 轴标签

kendo-ui - Kendo Ui 数据源添加功能无法正常工作

swift - 在 Swift 中为更多 View Controller 自定义 TableView ?

java - @ResponseBody 注解在响应中重置 header

java - 什么时候应该使用方法返回值?

php - 从多个表中检索数据并将它们列在列表中

php - utf8 字符在转换为 mysqli_query() 后错误地显示为问号

php - Codeigniter View -插入语句

来自结构数组的 C# ComboBox

java - 虽然我使用 AsyncTask 但应用程序没有响应