我正在验证我的数据访问对象类的字段。在一次尝试中,我开始向属性(@NotNull、@NotBlank、@Min、@Max 等)添加 Bean 验证注释。我还有更多注释 Jackson (JsonProperty (..)) 用于 swagger 库和文档(@Api (...))。在我看来,这个类非常“脏”,有很多注释(每个属性至少有三个注释)。一个字段的示例:
@JsonProperty("ownName")
@Api(description="it is my own name" required=true)
@Valid
@NotNull
private SomeObject object;
Run Code Online (Sandbox Code Playgroud)
在另一次尝试中,我使用 SpringValidator
接口执行了我自己的验证。如果使用自定义验证器,例如 Spring 接口,它似乎更清晰,并且还允许您自由地为不同情况生成多个验证器。此外,该类似乎没有过多的注释和验证独立于该类。示例Validator
:
public class UserValidator implements Validator {
@Override
public boolean supports(Class<?> arg0) {
return User.class.isAssignableFrom(arg0);
}
@Override
public void validate(Object obj, Errors error) {
User user = (User) obj;
if(user.getPassword().length() < 10)
{
error.reject("Password must be lesser than 10");
}
//more validations....
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试docker for Windows 10
使用next命令创建一个docker-machine :
docker-machine create --driver hyperv default
Run Code Online (Sandbox Code Playgroud)
但我得到了下一个错误
Error with pre-create check: "Hyper-v commands have to be run as an Administrator"
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何解决这个问题?谢谢
我正在寻找重构一个太长的方法。搜索我发现了这个技术: 用方法对象替换方法,但我根本不明白。
如果重构的方法是:
public class Order {
//Method to refactor
public double price() {
double primaryBasePrice;
double secondaryBasePrice;
double tertiaryBasePrice;
//compute impl
}
//.....
}
Run Code Online (Sandbox Code Playgroud)
在 Web 示例中,使用方法对象重构替换方法 将如下所示:
public class Order {
//Method refactored
public double price() {
return new PriceCalculator(this).compute();
}
//.......
}
//Method object
public class PriceCalculator {
private double primaryBasePrice;
private double secondaryBasePrice;
private double tertiaryBasePrice;
public PriceCalculator(Order order) {
//??
}
public double compute() {
// impl
}
}
Run Code Online (Sandbox Code Playgroud)
但是如何PriceCalculator …
我在Spring Boot Application中使用Spring-dat-jpa,并尝试在存储库中执行本机查询。当我在表名称后附加模式名称时,它可以正常工作,但它不能独立运行,并且不会像我定义的实体类那样从application.properties文件中选择模式名称
我正在使用下面的属性来设置默认架构,它对于实体类和命名查询工作正常。但是,当我在@query中编写任何本机查询时,它开始抱怨架构名称:
spring.jpa.properties.hibernate.default_schema=NPS_WO
Run Code Online (Sandbox Code Playgroud)
以下是我的查询:
@Repository
public interface TestRepository extends JpaRepository<TypeRef,Long> {
@Query(value="SELECT t.* from Type_Ref t")
public List<Object[]> findAllTypes();
}
Run Code Online (Sandbox Code Playgroud)
在我的实际情况中,此查询将由复杂的本机查询代替。
任何帮助将不胜感激。
使用jdbcType=BIGDECIMAL
不支持myBatis
并ibatis
和抛出下一个错误:
Error resolving JdbcType. Cause: java.lang.IllegalArgumentException:
No enum constant org.apache.ibatis.type.JdbcType.BIGDECIMAL
Run Code Online (Sandbox Code Playgroud)
什么是jdbcType
替代品BIGDECIMAL
?
我正在使用mybatis-3.4.4
版本
我正在使用netflix伪装来传达微服务。
因此,我的微服务A有一个操作“ OperationA”,微服务B消耗了该操作,它通过名为X-Total的标头将一个参数传递给B
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("X-Total", page.getTotalSize());
Run Code Online (Sandbox Code Playgroud)
我的客户端界面如下:
@Headers({
"Content-Type: " + MediaType.APPLICATION_JSON_UTF8_VALUE
})
@RequestLine("GET Dto/")
List<Dto> search();
static DtoClient connect() {
return Feign.builder()
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.target(ConditionTypeClient.class, Urls.SERVICE_URL.toString());
}
Run Code Online (Sandbox Code Playgroud)
然后,我得到了dto的列表,但是我不知道如何获取标头X-TOTAL参数:
public List<Dto> search() {
DtoClient client = DtoClient.connect();
return client.search();
}
Run Code Online (Sandbox Code Playgroud)
如何获取标头参数?
是否可以使用运算符获取参数列表的第一个参数的位置(索引)IN
?
我正在寻找的结果是下一个:
SELECT 2 IN(2, 3, 1); -- Result I want is 0 but with IN is true
SELECT 3 IN(2, 3, 1); -- Result I want is 1 but with IN is true
SELECT 0 IN(2, 3, 1); -- Result I want is -1 but with IN is false
SELECT 1 IN(1, 1, 3); -- RESULT I WANT IS 0 ,1 but with IN is true
Run Code Online (Sandbox Code Playgroud) 我希望执行一个查询,如果存在(真或假),则返回一个 id 列表,而不是仅返回一个。
常见的存在查询如下
select exist(select 1 from one_table where id_table = 'some_value')
Run Code Online (Sandbox Code Playgroud)
我想要一个检查多个值的查询。会像下一个一样
select exist(select 1 from one_table
where id_table in('some_value_1', '...'))
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我正在寻找的所有 Id 都必须存在。
目前,我必须使用ABAP中的代码,其中包含一个字符串,该字符串具有多个以大写字母/大写字母开头的单词,并且它们之间没有空格,必须将其分成一个内部表,如下所示:
输入:
NameAgeAddress
输出:
Name
Age
Address
Run Code Online (Sandbox Code Playgroud) java ×3
postgresql ×2
sql ×2
abap ×1
c# ×1
coding-style ×1
docker ×1
hibernate ×1
ibatis ×1
jdbc ×1
mybatis ×1
refactoring ×1
spring ×1
spring-boot ×1
validation ×1
web-services ×1