想了解使用@Valid将JSON集成到对象的Spring的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于json_valid的相关问题,此外,我们还将为您介绍关于druid-spring-b
想了解使用@Valid 将 JSON 集成到对象的 Spring的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于json_valid的相关问题,此外,我们还将为您介绍关于druid-spring-boot-starter:数据库连接池,集成到springboot、EFCore使用JSON_VALUE查询json对象的值、JFinal Dao 集成到 Spring、jfinal如何较好的支持json字符串到对象的转换?的新知识。
本文目录一览:- 使用@Valid 将 JSON 集成到对象的 Spring(json_valid)
- druid-spring-boot-starter:数据库连接池,集成到springboot
- EFCore使用JSON_VALUE查询json对象的值
- JFinal Dao 集成到 Spring
- jfinal如何较好的支持json字符串到对象的转换?
使用@Valid 将 JSON 集成到对象的 Spring(json_valid)
好吧,有一种方法可以使用验证器注册 IntegrationContextUtils.MESSAGE_HANDLER_FACTORY_BEAN_NAME
的自定义 DefaultMessageHandlerMethodFactory
bean,然后使用带有 @ServiceActivator
(@Validated
) 的 @Valid
对您的 MyDTO
负载参数进行注释,但我觉得这会有点麻烦。
考虑实现一些 GenericSelector
,它将为 Validator.validate()
EI 方法中使用的有效负载执行 filter()
。
我们仍然有一个打开的票来实现一些开箱即用的东西:https://jira.spring.io/browse/INT-4068
druid-spring-boot-starter:数据库连接池,集成到springboot
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
1.如上pom.xml插入配置
2.在application.properties里配置,也可以在application.yml里配置,只不过写法不一样,但也差不多
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.driver-class-name=oracle.jdbc.driver.OracleDriver
#spring.datasource.druid.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.druid.url=jdbc:oracle:thin:@192.168.1.11:1521:orcl
spring.datasource.druid.username=platform
spring.datasource.druid.password=platform
spring.datasource.druid.initial-size=5
spring.datasource.druid.minIdle=5
spring.datasource.druid.maxActive=20
spring.datasource.druid.maxWait=60000
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
spring.datasource.druid.minEvictableIdleTimeMillis=300000
spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.testOnBorrow=false
spring.datasource.druid.testOnReturn=false
spring.datasource.druid.poolPreparedStatements=true
spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.druid.filters=stat,wall
spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
3.开始还不了解这些属性的意思后来去挨个查了下,下面是网上资料
上面都是些常用的属性。
总结:
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。DruidDataSource支持的数据库:
理论上说,支持所有有jdbc驱动的数据库。最近发现Druid在springboot框架下有更加好用的Druid Spring Boot Starter,可以省去原本写Druid的一些配置文件或者@Configuration来配置,直接将配置写在application.yml或者application.properties里,看起来更简单一些。
EFCore使用JSON_VALUE查询json对象的值
EFCore使用JSON_VALUE查询json对象的值
Intro
sqlServer 从2016开始支持 JSON 操作,可以使用 JSON_VALUE 查询 JSON 对象的某个属性值,更多介绍,现在公司的一些项目主要是使用 EF Core,手写sql较少,针对比较简单的 JSON_VALUE 查询想通过 DbFunction 来实现,于是就有了这篇文章的探索。
定义 JSON_VALUE
DbFunction
public static class DbFunctions
{
[DbFunction("JSON_VALUE","")]
public static string JsonValue(string column,[NotParameterized] string path)
{
throw new NotSupportedException();
}
}
在 DbContext 中注册 DbFunction
重写 DbContext 的 OnModelCreating
方法,在 OnModelCreating
方法中注册 DbFunction
public class TestDbContext : DbContext
{
public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
{
}
public DbSet<TestEntity> TestEntities { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDbFunction(() => DbFunctions.JsonValue(default(string),default(string)));
}
}
public class TestEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Extra { get; set; }
public DateTime CreatedAt { get; set; }
}
使用注册的 DbFunction 查询 JSON_VALUE
数据库中添加了三条测试数据,测试数据如下:
var loggerFactory = new LoggerFactory();
loggerFactory.AddLog4Net();
var optionsBuilder = new DbContextOptionsBuilder<TestDbContext>()
.UseLoggerFactory(loggerFactory)
.UsesqlServer("server=.;database=Test;Integrated Security=True");
var db = new TestDbContext(optionsBuilder.Options);
var names = db.TestEntities.AsNoTracking().Select(t => DbFunctions.JsonValue(t.Extra,"$.Name")).ToArray();
监控生成的sql语句
我这里通过 log4net 记录执行的 sql 语句,监控到执行的sql语句如下:
SELECT JSON_VALUE([t].[Extra],N''$.Name'')
FROM [TestEntities] AS [t]
Source
示例代码: https://github.com/WeihanLi/WeihanLi.EntityFramework/blob/master/samples/WeihanLi.EntityFramework.Samples/Program.cs
Reference
- https://docs.microsoft.com/en-us/sql/t-sql/functions/json-value-transact-sql?view=sql-server-2017
- https://docs.microsoft.com/en-us/sql/relational-databases/json/json-path-expressions-sql-server?view=sql-server-2017
- https://stackoverflow.com/questions/52017204/expression-tree-to-sql-with-ef-core
- https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#database-scalar-function-mapping
总结
以上是小编为你收集整理的EFCore使用JSON_VALUE查询json对象的值全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
JFinal Dao 集成到 Spring
@idreamblue 你好,想跟你请教个问题:看了你的博文 《JFinal Dao 集成到 Spring》,想请教你下整个的集成过程,因为对spring用的不熟悉,所以不知道应该怎么把jfinal放进去,希望能得到你的指点,不胜感激。
jfinal如何较好的支持json字符串到对象的转换?
@JFinal 你好,想跟你请教个问题:
现在项目中使用redis之类的内存数据库,需要把json字符串转化为对象。
如果是简单的model对象,可以用model.setAttrs 或者record.setColumns方法来实现,但是如果是比较复杂的对象,要怎么较好的支持json字符串转化为对象呢?
比如record里面包含record,或者普通对象里面包含List<Model>、List<Record>,其中的model或者record又包含其他list<Model>对象,如果对特定格式的特殊处理是比较简单,但是好像很难做个公用的、都适用的方法。
我们今天的关于使用@Valid 将 JSON 集成到对象的 Spring和json_valid的分享就到这里,谢谢您的阅读,如果想了解更多关于druid-spring-boot-starter:数据库连接池,集成到springboot、EFCore使用JSON_VALUE查询json对象的值、JFinal Dao 集成到 Spring、jfinal如何较好的支持json字符串到对象的转换?的相关信息,可以在本站进行搜索。
本文标签: