如果您正在寻找 Java 的嵌入式解决方案,您可以尝试 jsup,这是一个用于在 SQL 数据库中存储和获取简单用户首选项的 Java 库。
我是 jsup 的作者,写了很多小应用程序/工具。我经常发现需要支持用户偏好,但没有找到适用于不同 SQL 数据库的合适库,所以我继续创建了 jsup。
它适用于各种常见的 SQL 数据库类型,并且易于上手:
Injector injector = Guice.createInjector(
new AbstractModule() {
@Override
protected void configure() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:h2:mem:testdb");
HikariDataSource dataSource = new HikariDataSource(config);
// Be sure to specify the correct dialect.
bind(Key.get(SQLDialect.class, UserPreferencesModule.UserPreferences.class)).toInstance(SQLDialect.H2);
bind(Key.get(DataSource.class, UserPreferencesModule.UserPreferences.class)).toInstance(dataSource);
}
},
new UserPreferencesModule());
UserPreferencesDb userPreferencesDb = injector.getInstance(UserPreferencesDb.class);
UserPreferencesAnalytics userPreferencesAnalytics = injector.getInstance(UserPreferencesAnalytics.class);
userPreferencesDb.setString("some-user", "ui", "theme", "default");
userPreferencesDb.setString("some-user", "ui", "display.timestamp.timezone", "UTC");
userPreferencesDb.addToSet("some-user", "app", "favorite.projects", ImmutableSet.of("prj1", "prj2"));
userPreferencesDb.setBoolean("some-user", "app", "email.on.failure", true);
System.out.println(userPreferencesDb.getString("some-user", "ui", "theme"));
System.out.println(userPreferencesDb.getString("some-user", "ui", "display.timestamp.timezone"));
System.out.println(userPreferencesDb.getSet("some-user", "app", "favorite.projects"));
System.out.println(userPreferencesDb.getBoolean("some-user", "app", "email.on.failure"));
System.out.println(userPreferencesAnalytics.getStringCategories());
System.out.println(userPreferencesAnalytics.getBooleanPreferencesByUser("app", "email.on.failure"));
除了用于存储和获取首选项的数据库界面外,还有一个分析界面可用于获取统计信息或更轻松地与其他工具集成。
GitHub 页面上有示例和更多文档。如果您有想要添加的内容,请开票。