`

Mybatis JSR303 bean validation plugin

阅读更多

写了一个简单的for mybatis的jsr303 代码生成插件,用于配置在mybatis 的代码生成配置参数文件中,代码如下:

package com.shinowit.mybatis.plugin;

import java.sql.Types;
import java.util.List;

import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.TopLevelClass;

public class JSR303Plugin extends PluginAdapter {
	
	@Override
	public boolean validate(List<String> warnings) {
		return true;
	}

	@Override
	public boolean modelFieldGenerated(Field field,
			TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,
			IntrospectedTable introspectedTable, ModelClassType modelClassType) {
		
		if (false==introspectedColumn.isNullable()){
			if (false==introspectedColumn.isIdentity()){
				topLevelClass.addImportedType("javax.validation.constraints.NotNull");
				field.addAnnotation("@NotNull");
			}
		}
		
		if (true==introspectedColumn.isStringColumn()){
			topLevelClass.addImportedType("javax.validation.constraints.Size");
			field.addAnnotation("@Size(min = 0, max = "+introspectedColumn.getLength()+" , message = \"长度必须在{min}和{max}之间\")");
		}
		
		if (introspectedColumn.getJdbcType()==Types.INTEGER){
			topLevelClass.addImportedType("javax.validation.constraints.Max");
			field.addAnnotation("@Max(value=2147483647,message=\"最大值不能高于{value}\")");
			topLevelClass.addImportedType("javax.validation.constraints.Min");
			field.addAnnotation("@Min(value=-2147483648,message=\"最小值不能低于{value}\")");
		}
		
		return super.modelFieldGenerated(field, topLevelClass, introspectedColumn,
				introspectedTable, modelClassType);
	}
	
	

}

 

有兴趣的可以继续写对byte类型,short类型的取值大小验证

0
1
分享到:
评论
1 楼 wpgogogo 2014-01-06  
额 怎么用....

相关推荐

    分布式框架简介SSM组合+ springmvc+mybatis+shiro+restful+bootstrap

    - **服务端验证**: Hibernate Validator(实现了JSR 303 Bean Validation API)。 - **布局框架**: SiteMesh(页面布局框架)。 - **工作流引擎**: Activiti(开源工作流引擎)。 - **任务调度**: Quartz(强大的...

    Struts2+Spring3+MyBatis3完整实例

    网上的东西好大多都不能直接用,自己结合网上资料做了一个Struts2+Spring3+MyBatis3的测试工程,JUnit测试用例和WEB服务。 内涵完整jar包,解压直接可用,包括一个表文件。 Eclipse3.2+Tomcat/5.5+jdk1.5.0_17 - ...

    SSH框架相关spring3.0相关架包,hibernate ,strut2相关架包

    Spring 3.0版本在前代基础上增强了对JSR-303(Bean Validation)的支持,改进了AOP(面向切面编程)和声明式事务管理,还引入了更多对RESTful服务的支持。其关键组件包括IoC(Inversion of Control,控制反转)容器...

    SSH框架常用Jar包

    3. `hibernate-validator.jar`:提供了JSR-303/JSR-349 Bean Validation规范的实现,用于校验实体对象。 4. `javassist.jar`:代码生成库,Hibernate在运行时动态生成代理类。 5. `jta.jar`:Java Transaction API,...

    ssh2框架集成所需jar包

    Spring2.5.6版本增强了对JSR-303(Bean Validation)的支持,改进了数据访问抽象,以及对其他框架如Hibernate和MyBatis的整合。 **Hibernate** 是一个流行的ORM(Object-Relational Mapping)框架,用于简化Java...

Global site tag (gtag.js) - Google Analytics