国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

hibernate vilidator主要使用注解的方式對bean進(jìn)行校驗(yàn)

這篇具有很好參考價(jià)值的文章主要介紹了hibernate vilidator主要使用注解的方式對bean進(jìn)行校驗(yàn)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

hibernate vilidator主要使用注解的方式對bean進(jìn)行校驗(yàn),初步的例子如下所示:

package com.learn.validate.domain;
import javax.validation.constraints.Min;
import org.hibernate.validator.constraints.NotBlank;
public class Student {
//在需要校驗(yàn)的字段上指定約束條件
 @NotBlank
 private String name;
 @Min(3)
 private int age;
 @NotBlank
 private String classess;

  public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getClassess() {
  return classess;
 }
 public void setClassess(String classess) {
  this.classess = classess;
 }
 
}

然后在controller中可以這樣調(diào)用,加上@Validated注解即可。

package com.learn.validate.controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.learn.validate.domain.Student;

@RestController
public class ValidateController {

 @RequestMapping(value="testStudent")
 public void testStudent(@Validated Student student) {
 }
}

如果校驗(yàn)失敗,默認(rèn)會返回Spring boot 框架的出錯(cuò)信息。是一個(gè)json串,里面有詳細(xì)的出錯(cuò)描述。

二 使用gruops 屬性來實(shí)現(xiàn)區(qū)別不同的校驗(yàn)需求
在上面的例子中,如果Student bean想要用于兩個(gè)不同的請求中,每個(gè)請求有不同的校驗(yàn)需求,例如一個(gè)請求只需要校驗(yàn)name字段,一個(gè)請求需要校驗(yàn)name和age兩個(gè)字段,那該怎么做呢?
使用注解的groups屬性可以很好的解決這個(gè)問題,如下所示:

package com.learn.validate.domain;
import javax.validation.constraints.Min;

import org.hibernate.validator.constraints.NotBlank;

public class Student {
    //使用groups屬性來給分組命名,然后在需要的地方指定命令即可
    @NotBlank(groups=NAME.class)
    private String name;
    @Min(value=3,groups=AGE.class)
    private int age;
    @NotBlank
    private String classess;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getClassess() {
        return classess;
    }
    public void setClassess(String classess) {
        this.classess = classess;
    }
    
    public interface NAME{};
    
    public interface AGE{};

}

根據(jù)需要在@Validated屬性中指定需要校驗(yàn)的分組名,可以指定1到多個(gè)。指定到的分組名會全部進(jìn)行校驗(yàn),不指定的不校驗(yàn)。

package com.learn.validate.controller;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.learn.validate.domain.Student;
import com.learn.validate.domain.Student.AGE;
import com.learn.validate.domain.Student.NAME;

@RestController
public class ValidateController {

    @RequestMapping(value="testStudent")
    public void testStudent(@Validated Student student) {
        
    }
    
    
    @RequestMapping(value="testStudent1")
    public void testStudent1(@Validated(NAME.class) Student student) {
        
    }
    
    @RequestMapping(value="testStudent2")
    public void testStudent2(@Validated({NAME.class,AGE.class}) 
    Student student) {
        
    }
}

三 使用 @ScriptAssert 注解校驗(yàn)復(fù)雜的業(yè)務(wù)邏輯
如果需要校驗(yàn)的業(yè)務(wù)邏輯比較復(fù)雜,簡單的@NotBlank,@Min注解已經(jīng)無法滿足需求了,這時(shí)可以使用@ScriptAssert來指定進(jìn)行校驗(yàn)的方法,通過方法來進(jìn)行復(fù)雜業(yè)務(wù)邏輯的校驗(yàn),然后返回 true或false來表明是否校驗(yàn)成功。例如下面的例子:

package com.learn.validate.domain;
import javax.validation.constraints.Min;

import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.ScriptAssert;

import com.learn.validate.domain.Student.CHECK;
//通過script 屬性指定進(jìn)行校驗(yàn)的方法,傳遞校驗(yàn)的參數(shù),
//依然可以通過groups屬性指定分組名稱
@ScriptAssert(lang="javascript",script="com.learn.validate.domain
.Student.checkParams(_this.name,_this.age,_this.classes)",
groups=CHECK.class)
public class Student {
 
 @NotBlank(groups=NAME.class)
 private String name;
 @Min(value=3,groups=AGE.class)
 private int age;
 @NotBlank
 private String classess;
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getClassess() {
  return classess;
 }
 public void setClassess(String classess) {
  this.classess = classess;
 }
 
 public interface NAME{};
 
 public interface AGE{};
 
 public interface CHECK{};
 
 //注意進(jìn)行校驗(yàn)的方法要寫成靜態(tài)方法,否則會出現(xiàn) 
 //TypeError: xxx is not a function 的錯(cuò)誤
 public static boolean checkParams(String name,int age,String classes) {
  if(name!=null&&age>8&classes!=null)
  {
   return true;
  }
  else
  {
   return false;
  }
  
 }

}

在需要的地方,通過分組名稱進(jìn)行調(diào)用

package com.learn.validate.controller;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.learn.validate.domain.Student;
import com.learn.validate.domain.Student.CHECK;

@RestController
public class ValidateController {
 
 @RequestMapping(value="testStudent3")
 public void testStudent3(@Validated(CHECK.class) Student student) {
  
 }
}

原文鏈接:Spring boot使用總結(jié)(三)校驗(yàn) - 簡書 (jianshu.com)?文章來源地址http://www.zghlxwxcb.cn/news/detail-502150.html

到了這里,關(guān)于hibernate vilidator主要使用注解的方式對bean進(jìn)行校驗(yàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 11Spring IoC注解式開發(fā)(上)(元注解/聲明Bean的注解/注解的使用/負(fù)責(zé)實(shí)例化Bean的注解)

    11Spring IoC注解式開發(fā)(上)(元注解/聲明Bean的注解/注解的使用/負(fù)責(zé)實(shí)例化Bean的注解)

    注解的存在主要是為了簡化XML的配置。Spring6倡導(dǎo)全注解開發(fā)。 注解開發(fā)的優(yōu)點(diǎn) :提高開發(fā)效率 注解開發(fā)的缺點(diǎn) :在一定程度上違背了OCP原則,使用注解的開發(fā)的前提是需求比較固定,變動(dòng)較小。 自定義一個(gè)注解: 該注解上面修飾的注解包括:Target注解和Retention注解,這兩個(gè)注

    2024年01月21日
    瀏覽(32)
  • Spring使用注解管理Bean

    Spring使用注解管理Bean

    引入lib包 Spring對Bean管理的常用注解 @Component組件(作用在類上) Spring中提供了@Component的三個(gè)衍生注解:(功能在目前為止是一致的) @Controller WEB層 @Service 業(yè)務(wù)層 @Repository 持久層 屬性注入的注解:(使用注解注入的方式,可以不用提供set方法) @Value? 用于注入普通類型 @Autowired? 自動(dòng)裝

    2024年01月17日
    瀏覽(30)
  • Spring使用注解存儲Bean對象

    Spring使用注解存儲Bean對象

    在前一篇博客中( Spring項(xiàng)目創(chuàng)建與Bean的存儲與讀取(DL))介紹的是通過配置文件注冊對象從而存儲到 Spring 中,這種方式其實(shí)還是挺繁瑣的。 實(shí)際上,在使用學(xué)習(xí)使用 Spring過程中,當(dāng)我們要實(shí)現(xiàn)一個(gè)功能的時(shí)候,先應(yīng)該考慮的是有沒有相應(yīng)的注解是實(shí)現(xiàn)對應(yīng)功能的,Spring 中

    2024年02月16日
    瀏覽(22)
  • 【Spring】使用@Bean和@Import注解配置Bean,與Bean的實(shí)例化

    【Spring】使用@Bean和@Import注解配置Bean,與Bean的實(shí)例化

    目錄 1、bean是什么 2、配置bean 2.1、使用@Bean注解配置Bean 2.2、使用@Import注解配置Bean ?3、實(shí)例化Bean ????????在 Spring 中,Bean 是指由 Spring 容器管理的對象。Spring IOC 容器負(fù)責(zé)創(chuàng)建、配置和管理這些 Bean 對象的生命周期。Spring IOC 容器會管理應(yīng)用程序中的組件,并通過依賴注

    2024年04月15日
    瀏覽(26)
  • 【Spring】使用注解讀取和存儲Bean對象

    【Spring】使用注解讀取和存儲Bean對象

    ?哈嘍,哈嘍,大家好~ 我是你們的老朋友: 保護(hù)小周? ?? 談起Java 圈子里的框架,最年長最耀眼的莫過于 Spring 框架啦,本期給大家?guī)淼氖牵? 將對象存儲到 Spring 中、Bean 對象的命名規(guī)則、從Spring 中獲取bean 對象、注入的、@Autowired 與?@Resource 的區(qū)別、解決@Bean 方

    2024年02月13日
    瀏覽(23)
  • 【Spring框架全系列】方法注解@Bean的使用

    【Spring框架全系列】方法注解@Bean的使用

    ????哈嘍,大家好,我是小浪。上篇博客我們介紹了五大類注解的使用方法,以及如何解決Spring使用五大類注解生成bean-Name的問題;那么,談到如何更簡單的讀取和存儲對象,這里我們還需要介紹另外一個(gè)\\\"方法注解@Bean\\\"的使用,快來一起學(xué)習(xí)叭!???? ??目錄 一、如何使

    2024年02月04日
    瀏覽(23)
  • 使用Spring的五大類注解讀取和存儲Bean

    使用Spring的五大類注解讀取和存儲Bean

    目錄 1.存儲Bean對象的注解 1.1 五大類注解 1.2 方法注解 1.3添加注解的依賴 2.注解的使用 2.1??controller注解 2. 2Service注解 ?2.3.Resopsitory注解 2.4Component注解 2.5Configuration注解 2.6 注解之間的關(guān)系 3.方法注解 3.1 方法注解要配合類注解來使用。 3.2 重命名Bean 4.獲取Bean對象(對象裝配

    2024年02月01日
    瀏覽(24)
  • 【Spring】(三)Spring 使用注解存儲和讀取 Bean對象

    【Spring】(三)Spring 使用注解存儲和讀取 Bean對象

    前面的文章詳細(xì)的介紹了 Spring 對象的創(chuàng)建,以及對 Bean 對象的存取操作,但是通過配置文件注冊 Bean 對象以及使用 ApplicationContext 或 BeanFactory 的方式獲取 Bean 對象的操作就顯得格外的復(fù)雜。因此,本文主要就是詳細(xì)介紹了一種更加簡單的方式來實(shí)現(xiàn)對 Bean 對象更加簡單的儲

    2024年02月14日
    瀏覽(19)
  • 為什么需要在bean上使用@EqualsAndHashCode(callSuper = true)這個(gè)注解

    為什么需要在bean上使用@EqualsAndHashCode(callSuper = true)這個(gè)注解

    我們還是寫一個(gè)案例,來探討它的作用。 寫三個(gè)類,一個(gè)是子類Child.class,一個(gè)是父類Person.class,一個(gè)是測試類Test.class Person父類很簡單,就一個(gè)屬性code; Child子類也很簡單,繼承了父類之后,自己也是定義了一個(gè)屬性name; Test類: 創(chuàng)建了兩個(gè)Child,屬性code是不一樣的,一個(gè)

    2024年02月03日
    瀏覽(20)
  • Hibernate的查詢方式(大全),springcloud視頻

    Hibernate的查詢方式(大全),springcloud視頻

    也可以這樣查詢 (2.0)HQL別名查詢 @Test // 別名查詢 public void demo03() { Session session = HibernateUtils.getCurrentSession(); Transaction transaction = session.beginTransaction(); // 得到所有的客戶 //別名查詢 Query query = session.createQuery(“from Customer c”);//c是Customer的別名 List list = query.list(); for (Customer

    2024年04月13日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包