当前位置: 首页 > 知识库问答 >
问题:

jOOQ将字符串转换为布尔值

杜晨朗
2023-03-14

我在MySQL中有一个表,其中有一些列(MD5、flagfreferenced、FLAGCHANGEPASSWORD),其定义类似于“char(1)”,其中唯一可能的值是0和1。我希望jOOQ在代码生成中将这些转换为布尔值。

我创建了一个转换器:

public class BooleanConverter implements org.jooq.Converter<String, Boolean>{

   private static final long serialVersionUID = -4785961538634851898L;

   @Override
   public Boolean from(String arg0) {
      if (arg0 == null) {
         return null;
      }
      return arg0.equals("1");
   }

   @Override
   public Class<String> fromType() {
      return String.class;
   }

   @Override
   public String to(Boolean arg0) {
      if (arg0 == null) {
         return null;
      }
      return arg0.booleanValue() ? "1" : "0";
   }

   @Override
   public Class<Boolean> toType() {
      return Boolean.class;
   }

}

然后在pom中配置转换器(我使用maven生成源代码)。

<customTypes>
  <customType>
    <name>java.lang.Boolean</name>
    <converter>org.test.converter.BooleanConverter</converter>
  </customType>
</customTypes>

<forcedTypes>
  <forcedType>
    <name>java.lang.Boolean</name>
    <expressions>.*\.FLAGCHANGEPASSWORD,.*\.FLAGCONFIRMED,.*\.MD5.*</expressions>
  </forcedType>
</forcedTypes>
/**
 * The table column <code>mmw.enduser.MD5</code>
 */
public final org.jooq.TableField<de.kybeidos.mmw.data.tables.records.EnduserRecord, java.lang.String> MD5 = createField("MD5", org.jooq.impl.SQLDataType.CHAR, this);

共有1个答案

仲孙钊
2023-03-14

这似乎是jooq-codegen中的一个bug。虽然文档清楚地说明可以提供几个正则表达式...

<forcedTypes>
  <forcedType>
    <!-- Specify again he fully-qualified class name of your custom type -->
    <name>java.util.GregorianCalendar</name>

    <!-- Add a list of comma-separated regular expressions matching columns -->
    <expressions>.*\.DATE_OF_.*</expressions>
  </forcedType>
</forcedTypes>

摘自
http://www.jooq.org/doc/2.6/manual/code-generation/custom-data-types/

...源代码实际上将 内容解释为单个正则表达式。请尝试以下方法,用管道替换逗号:

<expressions>.*\.FLAGCHANGEPASSWORD|.*\.FLAGCONFIRMED|.*\.MD5.*</expressions>
<forcedTypes>
  <forcedType>
    <name>BOOLEAN</name>
    <expressions>.*\.FLAGCHANGEPASSWORD|.*\.FLAGCONFIRMED|.*\.MD5.*</expressions>
  </forcedType>
</forcedTypes>
 类似资料:
  • 问题内容: 我有一个布尔变量,我想将其转换为字符串: 我需要转换后的值的格式为:,而不是 我试过了: 但是它告诉我,并且不是公认的功能。 如何将此布尔值转换为PHP 或PHP 格式的字符串? 问题答案: 最简单的解决方案:

  • 问题内容: 如何将字符串转换为? 它返回 布尔值true 但这应该是。 问题答案: 除非字符串的值被PHP视为“空”(从的文档中获取),否则字符串始终为布尔值true : (一个空字符串); (0作为字符串) 如果您需要根据字符串的文本值设置布尔值,则需要检查该值是否存在。 编辑:上面的代码旨在使理解更加清晰。在实际使用中,以下代码可能更合适: 或者使用该功能可能会覆盖更多的布尔值: 覆盖整个范围

  • 我有一个值,它将是四件事之一:布尔true、布尔false、字符串“true”或字符串“false”。如果字符串是字符串,我想将字符串转换为布尔值,否则不修改它。换句话说: “true”应该变为true “false”应变为false 真实应该保持真实 false应保持为false

  • 本文向大家介绍将Java字符串对象转换为布尔对象,包括了将Java字符串对象转换为布尔对象的使用技巧和注意事项,需要的朋友参考一下 可以使用字符串文字在Java中创建字符串对象。 创建字符串对象的另一种方法是使用new关键字。 我们使用第一种方法来创建字符串对象。 现在,使用该方法将字符串对象转换为布尔对象。我们已经在布尔对象上使用了此方法。 现在让我们看完整的示例,以显示如何将String Ob

  • 问题内容: 我可以将表示布尔值(例如,“ true”,“ false”)的字符串转换为JavaScript中的固有类型吗? 我有一个隐藏的HTML表单,可根据用户在列表中的选择进行更新。此表单包含一些表示布尔值的字段,并使用内部布尔值动态填充。但是,一旦将此值放入隐藏的输入字段中,它将成为一个字符串。 确定字段的布尔值(将其转换为字符串后)的唯一方法是依赖于其字符串表示形式的文字值。 有没有更好的

  • 问题内容: 我想转换一个叫到(或使用),但它不能做的工作。Go中惯用的方式是什么? 问题答案: 使用strconv包 docs func FormatBool(b bool)字符串Formatbool 根据b的值返回“ true”或“ false”

  • 问题内容: 我有一个名为数据帧作为 我想将列转换为布尔值(当状态为“已交付”而状态为“未交付”时),但是如果状态既不是“未交付”也不是“未交付”,则应将其视为“类似”。 我想用一个字典 所以我可以轻松地添加其他字符串,可以将其视为或。 问题答案: 您可以使用: