Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将设置存储到数据库行中_Java_Database - Fatal编程技术网

Java 将设置存储到数据库行中

Java 将设置存储到数据库行中,java,database,Java,Database,我在旧系统中看到了存储到数据库行应用程序设置的优化方式。像这样的 10 - enabled option 1; 12 - enabled option 2; 13 - enabled option 3; 整个数字以101213的形式存储到数据库中。您知道该模式的名称吗?是否有Java教程?不要以某种巧妙的编码方式将设置保存在一个值中,即简单地连接值或位编码。处理这些价值观是一种复杂的方式 而是将值保存在每个设置都有自己行的表中,如下所示: +----+---------------+-----

我在旧系统中看到了存储到数据库行应用程序设置的优化方式。像这样的

10 - enabled option 1;
12 - enabled option 2;
13 - enabled option 3;

整个数字以101213的形式存储到数据库中。您知道该模式的名称吗?是否有Java教程?

不要以某种巧妙的编码方式将设置保存在一个值中,即简单地连接值或位编码。处理这些价值观是一种复杂的方式

而是将值保存在每个设置都有自己行的表中,如下所示:

+----+---------------+-------+
| id | setting       | value |
+----+---------------+-------+
| 1  | SomeSetting   | 42    |
| 2  | AnotherOne    | true  |
| 3  | SomethingElse | 4.56  |
| .. | ...           | ...   |
+--------------------+-------+

这样,您只需运行
SELECT
语句即可获得所有/一个设置,并使用
UPDATE
语句更改值。您甚至可以考虑将值保存在不同的列类型中,以便获得所需的正确类型,而不是将其解析/转换为所需类型。

< P>不要以一种聪明的编码方式将设置保存在一个值中,而是简单地连接值或位编码。处理这些价值观是一种复杂的方式

而是将值保存在每个设置都有自己行的表中,如下所示:

+----+---------------+-------+
| id | setting       | value |
+----+---------------+-------+
| 1  | SomeSetting   | 42    |
| 2  | AnotherOne    | true  |
| 3  | SomethingElse | 4.56  |
| .. | ...           | ...   |
+--------------------+-------+

这样,您只需运行
SELECT
语句即可获得所有/一个设置,并使用
UPDATE
语句更改值。您甚至可以考虑将值保存在不同的列类型中,这样就可以获得所需的正确类型值而不是解析/转换为所需类型。

< P> >没有模式。看起来有人真的空间不足,愿意为了空间而牺牲可读性。这不是一个特别好的解决方案

当然,您可以这样做-您只需要两种方法:一种是在您希望将选项保存到数据库时将选项转换为字符串,另一种是在读取时将字符串转换为选项


但是,我建议使用一种更好的方法—将完整的对(如
“OptionA”、“true”
)或作为单个字符串(
OptionA=true
)。然后,您可以使用
java.util.Properties
及其许多优点,另外,您还可以获得一个可在不同项目中重用的代码。

没有这种模式。看起来有人真的空间不足,愿意为了空间而牺牲可读性。这不是一个特别好的解决方案

当然,您可以这样做-您只需要两种方法:一种是在您希望将选项保存到数据库时将选项转换为字符串,另一种是在读取时将字符串转换为选项


但是,我建议使用一种更好的方法—将完整的对(如
“OptionA”、“true”
)或作为单个字符串(
OptionA=true
)。然后您可以使用
java.util.Properties
及其许多优点,另外您还可以得到一个可在不同项目中重用的代码。

这是一种简单的数据压缩,因此您可以简单地测试您的选项是否通过
yourline.indexOf(“您的选项”)启用-1

我建议使用一个表,每个选项一行,但是如果你真的想有一个包含所有选项的项目,更好的方法是每个选项使用一位-前面的方法可能会导致错误(如果你有100多个选项怎么办?101意味着启用10和1或101-

要按位操作,可以使用BigDecimal:

// Let's say you get a String representing your option from your database
String optionFromDB=...;
// optionFromDB is a number like "132456"
// We transform it to bigDecimal:
BigDecimal myOptions=new BigDecimal(optionFromDB);

// Then we can use it.

// enable the option X (X is a number)
myOptions.setBit(x);

// Disable option X
myOptions.clearBit(x);

// Save the options to the db:
String newValToSave=myOptions.toString();

// do something if option x enable:
if (myOptions.testBit(x)){ .... }

这里我将BigDecimal保存为字符串,但您也可以直接将其作为数字存储在数据库中。

这是一种简单的数据压缩,因此您可以简单地测试您的选项是否已通过yourline.indexOf(“您的选项”)启用-1

我建议使用一个表,每个选项一行,但是如果你真的想有一个包含所有选项的项目,更好的方法是每个选项使用一位-前面的方法可能会导致错误(如果你有100多个选项怎么办?101意味着启用10和1或101-

要按位操作,可以使用BigDecimal:

// Let's say you get a String representing your option from your database
String optionFromDB=...;
// optionFromDB is a number like "132456"
// We transform it to bigDecimal:
BigDecimal myOptions=new BigDecimal(optionFromDB);

// Then we can use it.

// enable the option X (X is a number)
myOptions.setBit(x);

// Disable option X
myOptions.clearBit(x);

// Save the options to the db:
String newValToSave=myOptions.toString();

// do something if option x enable:
if (myOptions.testBit(x)){ .... }

在这里,我将BigDecimal保存为字符串,但您也可以将其直接存储为数据库中的数字。

这可能是自定义模式。我在使用带有分隔符(如$)的任何字符或数字序列以及表示代码上映射的特殊配置的每个序列之前看到了这一点。您可能希望检查java代码,看看是否存在某种类型的错误从该行检索数据时的映射我不认为存在这种模式。它看起来像一个简单的数据压缩(或编码/解码)。可能是当时的程序员刚想到的。如果是我,我会使用位而不是以10为基数的数字。你知道这种实现的一些Java教程吗?我想Real怀疑论意味着你可以将每个启用/禁用的选项视为自己的列。因此,你可以将一个布尔值映射到选项1和另一个选项用于选项2,依此类推。但如果它们是应用程序范围的设置,则通常存储在属性文件而不是数据库中(除非数据库需要它们,例如用于某些查询)可能是自定义模式。我在使用带有分隔符(如$)的任何字符或数字序列以及每个序列表示映射到代码上的特殊配置之前看到了这一点。您可能希望检查java代码,看看从该行检索数据时是否存在某种映射。我认为没有这种模式。它看起来像简单数据压缩(或编码/解码)。可能是当时的程序员刚想到的。如果是我,我会使用位而不是以10为基数的数字。你知道这种实现的一些Java教程吗?我想Real怀疑论意味着你可以将每个启用/禁用的选项视为自己的列。因此,你可以将一个布尔值映射到选项1和另一个选项用于选项2等等。但如果它们是应用程序范围的设置,则更常见的做法是存储在属性文件中,而不是