GVKun编程网logo

使用@Valid 将 JSON 集成到对象的 Spring(json_valid)

15

想了解使用@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)

使用@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

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对象的值

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

数据库中添加了三条测试数据,测试数据如下:

sample data

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

JFinal Dao 集成到 Spring

@idreamblue 你好,想跟你请教个问题:看了你的博文 《JFinal Dao 集成到 Spring》,想请教你下整个的集成过程,因为对spring用的不熟悉,所以不知道应该怎么把jfinal放进去,希望能得到你的指点,不胜感激。

jfinal如何较好的支持json字符串到对象的转换?

jfinal如何较好的支持json字符串到对象的转换?

@JFinal 你好,想跟你请教个问题:

现在项目中使用redis之类的内存数据库,需要把json字符串转化为对象。

如果是简单的model对象,可以用model.setAttrs 或者record.setColumns方法来实现,但是如果是比较复杂的对象,要怎么较好的支持json字符串转化为对象呢?

比如record里面包含record,或者普通对象里面包含List<Model>、List<Record>,其中的model或者record又包含其他list<Model>对象,如果对特定格式的特殊处理是比较简单,但是好像很难做个公用的、都适用的方法。

我们今天的关于使用@Valid 将 JSON 集成到对象的 Springjson_valid的分享就到这里,谢谢您的阅读,如果想了解更多关于druid-spring-boot-starter:数据库连接池,集成到springboot、EFCore使用JSON_VALUE查询json对象的值、JFinal Dao 集成到 Spring、jfinal如何较好的支持json字符串到对象的转换?的相关信息,可以在本站进行搜索。

本文标签: