【发布时间】:2020-07-01 13:43:35
【问题描述】:
我有一个 url 列表和一个包含 url 的表。如果 url 不在表格中,我只想插入。
Data in the Table:
|id | url | ... |
|---| --- | --- |
| 1 | example.com | ... |
List<String> urls = new ArrayList<>()
urls.add("example.com/");
urls.add("example.com/#");
urls.add("www.example.com/");
urls.add("https://www.example.com/");
urls.add("example.net");
插入后数据表应包含:
Data in the Table:
|id | url | ... |
|---| --- | --- |
| 1 | example.com | ... |
| 2 | example.net | ... |
我目前的尝试是创建一个方法 findByURL(url):List 并为列表中的每个 URL 调用此方法。如果返回的列表为空,我将 url 插入表中,但不幸的是,我的语句在 example.com 和 example.com 之间产生了差异#
@Table(name = "url_to_edit")
@NamedQueries({
@NamedQuery(name= UrlToEdit.FIND_BY_URL, query = "select urlToEdit from UrlToEdit urlToEdit where urlToEdit.url = :url")
})
@NoArgsConstructor
public class UrlToEdit { ... }
使用我当前的解决方案,该表包含以下行:
Data in the Table:
|id | url | ... |
|---| --- | --- |
| 1 | example.com | ... |
| 2 | example.com/ | ... |
| 3 | example.com/# | ... |
| 4 | www.example.com/ | ... |
| 5 | https://www.example.com/ | ... |
| 6 | example.net | ... |
怎么在sql里说是一样的呢?或者我需要某种预解析器? 是否可以进行批量插入?我当前的代码一个接一个地插入。
编辑:我有来自一个主机的多个 url。我无法追踪主机名。 例如example.com/test/example.com/test/# 和 example.com/# 等
【问题讨论】:
标签: java sql hibernate mariadb