在数据库插入之前修剪空格

Posted

技术标签:

【中文标题】在数据库插入之前修剪空格【英文标题】:Trim spaces before database inserts 【发布时间】:2015-07-30 09:56:06 【问题描述】:

我有一个网络应用程序,其中我需要使用休眠将数据插入数据库以实现多种功能。

但是我现在插入时忘记修剪空格,我希望所有未来的数据库插入都应该在修剪空格后完成。在所有控制器类中这样做的最佳方法是什么(我使用的是 spring mvc)。

我需要了解这种方法。

谢谢

【问题讨论】:

好吧,您有很多选择,您可以在数据库中为每个表使用触发器,或者为您的实体添加@PrePersist 和/或@PreUpdate 方法,甚至更改setters(我无论如何都不会这样做)在实体中,例如:this.x = trim(x); docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/… 【参考方案1】:

因为您可能无论如何都使用 setter,所以您可以像这样编写您的 setter:

public void setName(String name) 
    this.name = (name != null) ? name.trim() : null;

【讨论】:

【参考方案2】:

查看Spring Validation, Data Binding and Type Conversion 中提到的 StringTrimmerEditor,并在控制器代码中添加如下内容:

@InitBinder
public void initBinder(WebDataBinder binder) 
    binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));

【讨论】:

有人建议使用 AOP 方法。但我不知道我应该如何使用它?

以上是关于在数据库插入之前修剪空格的主要内容,如果未能解决你的问题,请参考以下文章

实体框架4.0在插入之前自动截断/修剪字符串

修剪功能将内存大小减半以删除空格?

如何在 LibreOffice 或 Google 表格中修剪整列的起始空间?

使用 Wordpress 修剪 MySQL 中的空格

如何从 Spring MVC 中的请求参数中修剪空格

修剪 PySpark 中名称之间的额外空格