首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MyBatis中执行长度检查约束的方法

在MyBatis中执行长度检查约束的方法
EN

Stack Overflow用户
提问于 2015-05-29 00:28:53
回答 1查看 2.4K关注 0票数 1

我在DB中为特定列定义了由SYS模式定义的一些检查约束。现在,当通过MyBatis从Java代码调用它时,是否只通过MYBatis配置强制相应的字段长度验证。

PS:我不想在VO级别强制执行约束(setter单独设置)。或使用JSR 303

DataBase :使用MyBatis的Oracle11g

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-30 19:54:27

如果您不想在java中进行验证(手动或使用JSR 303),我认为您可以为这些字段编写自己的typeHandler。

Typehandler将处理字符串字段并进行验证。见字符串TypeHandler的代码示例。您可以在处理程序的get/set方法中强制执行验证逻辑(无论复杂程度如何)。

如果要在保存到数据库时使用TypeHandler将字符串剪短到给定的长度,请使用setNonNullParameter方法进行。

下面的示例代码

代码语言:javascript
复制
    @MappedJdbcTypes(JdbcType.VARCHAR)
   public class ExampleTypeHandler extends BaseTypeHandler<String> {
    @Override
      public void setNonNullParameter(PreparedStatement ps, int i, 
String parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i, parameter.substring(0,DESIRED_MAX_LENGTH));
      }

您还可以修剪(或以其他方式修改)从数据库读取的值--需要修改TypeHandler实现中的get*方法。

您必须告诉映射者使用您的处理程序。否则,将使用给定类型的默认处理程序。XML文件中的SQL必须使用语法。

代码语言:javascript
复制
#{age,javaType=int,jdbcType=NUMERIC,typeHandler=MyTypeHandler}

有关详细信息,请查看https://mybatis.github.io/mybatis-3/sqlmap-xml.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30519253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档