将我的应用程序从 SpringBoot 2 升级到 SpringBoot 3 后,我看到了一些奇怪的情况。
该应用程序依赖于现有数据库(MySQL),但该数据库没有采用良好的实践。其中之一用于Y N存储在 VARCHAR 中的布尔值。
为了使 Java 方面的事情变得更容易,我创建了一个如下所示的转换器:
@Converter
public class BooleanToStringConverter implements AttributeConverter<Boolean, String> {
@Override
public String convertToDatabaseColumn(Boolean attribute) {
if (attribute == null) {
return null;
}
return attribute ? "Y" : "N";
}
@Override
public Boolean convertToEntityAttribute(String dbData) {
if (dbData == null) {
return null;
}
return dbData.equals("Y");
}
}
Run Code Online (Sandbox Code Playgroud)
在我的豆子上我用它作为:
@Column(name = "DELIVERED")
@Convert(converter = BooleanToStringConverter.class)
private Boolean delivered;
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。
如果我创建一个存储库来查询所有交付的实体,我会在 SpringBoot 2 中编写如下内容:
List<MyClass> findAllByDeliveredIsTrue(); …Run Code Online (Sandbox Code Playgroud) 我正在使用Angular 7开发Ionic 4.0.0 App,并且尝试将侧面菜单与辅助页面上的选项卡结合在一起。让我们看看它是如何工作的:
我面临两个主要问题:
基本上,在主路由模块上,我检查身份验证,如果用户未通过身份验证,则显示登录页面,并保护子路由。为了简单起见,我省略了此代码。
然后,我将/app/AppRoutingModule加载所有受保护的路由,看起来像这样(省略一些行):
const routes: Routes = [
{...},
{
path: 'communities',
loadChildren: './communities/communities-routing.module#CommunitiesRoutingModule',
},
{...}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {
}
Run Code Online (Sandbox Code Playgroud)
到达路径/ app / communities时,子路由模块CommunitiesRoutingModule被加载,看起来像这样:
const routes: Routes = [
{path: '', loadChildren: './communities.module#CommunitiesPageModule'}, // Page with a list of all communities.
{path: 'view/:id', loadChildren: './view-community/tabs/tabs.module#TabsPageModule'}, //Loads the tabs page module
{...} //Loads other sub-tabs.
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule] …Run Code Online (Sandbox Code Playgroud)