标签: spring-jdbc

如何在JDBC中配置正确的时区?

我有这个网址在我的意大利网站上设置连接,但是,当我尝试从网站执行一些插入操作时,日期仍然不正确.(它应该是例如:01:24,但它是02:24)

jdbc.url=jdbc:mysql://sql.example.com/database?autoReconnect=true&characterEncoding=UTF-8&sessionVariables=time_zone='Europe/Rome'
Run Code Online (Sandbox Code Playgroud)

我是否需要添加任何其他参数才能使其正常工作?是否有所有时区的完整列表?

java mysql timezone jdbc spring-jdbc

2
推荐指数
1
解决办法
2592
查看次数

如何从Spring获得最终查询?

我有以下代码 -

getNamedParameterJdbcTemplate().queryForList("SELECT id FROM emp WHERE age=:age", 
new MapSqlParameterSource("age", 19))
Run Code Online (Sandbox Code Playgroud)

如何在参数替换后将最终查询发送到Mysql?有什么像 -

getNamedParameterJdbcTemplate(query, paramSource).gimmeTheFinalQuery()
Run Code Online (Sandbox Code Playgroud)

java spring spring-jdbc

2
推荐指数
1
解决办法
2645
查看次数

Spring SimpleJdbcInsert vs JdbcTemplate

我有一个要求,我必须在数据库中插入一行并获得密钥(身份).我想到了使用SimpleJdbcInsert.我将对象传递JdbcTemplate给我SimpleJdbcInsert和执行方法executeAndReturnKey().

同样可以做到用update()的方法,JdbcTemplate通过设置PreparedStatement,而不是参数地图.

我只是想知道JdbcTemplate在性能方面是否更好,我应该在SimpleJdbcInsert上使用它吗?如果是这样,那么它的卓越性能是什么原因呢?

注意:我不是插入一批记录而是仅插入一条记录.

谢谢

performance spring spring-jdbc jdbctemplate simplejdbcinsert

2
推荐指数
1
解决办法
3048
查看次数

SpringJDBC提供ORA-00933:SQL命令未正确终止,但查询在DB Client中运行正常

以下Oracle查询在我的数据库客户端PL / SQL Developer中运行正常,并返回1个结果。

在我的Java应用程序中通过NamedParameterJdbcTemplate(SpringJDBC)运行它时,我得到

java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
Run Code Online (Sandbox Code Playgroud)

不能有任何空间问题或任何明显的问题,因为此确切的查询已在PL / SQL中完成。

private static final String SELECT1 = 
        " SELECT COUNT(*) " 
        " FROM table1 t1, table2 t2 " + 
        " WHERE t1.received_date > TRUNC(sysdate - 1) " + 
        " AND t1.received_date < TRUNC(sysdate) " + 
        " AND t1.type IN ('TYPE1', 'TYPE2') " + 
        " AND t2.received_num = t1.received_num; ";

public int getSelect1() {

    HashMap<String,Object> paramMap = new HashMap<String,Object>();     
    return jdbcTemplate.queryForObject(SELECT1, paramMap, Integer.class);       
}   
Run Code Online (Sandbox Code Playgroud)

spring spring-jdbc jdbctemplate

2
推荐指数
1
解决办法
992
查看次数

将jdbctemple结果转换为json的最有效方法?

一种方法是转换List< Map < String, Object>>List(object);Given Below

List<Map<String, Object>> ls = jdbcTemplate.queryForList(query);

List<Users> ls_o =  new ArrayList<>(ls_o);
        for (Map<String, Object> row : ls) {
        ls_o.add(row);

        }
 return new ResponseEntity<List<User>>(ls_o, HttpStatus.OK);
Run Code Online (Sandbox Code Playgroud)

是否有任何有效的方法直接将jdbcTemplate结果转换为json对象?

spring json spring-mvc spring-jdbc jdbctemplate

2
推荐指数
1
解决办法
4682
查看次数

spring boot:无法解析导入的org.springframework.jdbc.core.JdbcTemplate

我正在尝试使用springboot编写的一个测试程序遇到困难。当我尝试在DAO层中导入JdbcTemplate类时,出现错误:导入org.springframework.jdbc.core.JdbcTemplate无法解析

我不确定我缺少什么,我已经检查了依赖关系,它们对我来说很好。下面是我的pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.vittles</groupId>
    <artifactId>FoodFood</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>FoodFood</name>
    <url>http://maven.apache.org</url>

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>
Run Code Online (Sandbox Code Playgroud)

附件是我在Java文件中得到的错误 在此处输入图片说明

还附带了jar导入列表。可以让我知道我做错了吗。

在此处输入图片说明

java spring jdbc spring-jdbc spring-boot

2
推荐指数
1
解决办法
7818
查看次数

使用生成的JOOQ代码定位多个数据库类型

我想现在在开发过程中使用一个RDBMS和在生产中使用另一个RDBMS是很常见的.我想在开发中使用H2,在生产中使用MariaDB来实现Spring Boot和JOOQ应用程序.

是否有一些聪明的方法可以使相同的生成的JOOQ代码在开发和生产环境中都能工作,或者我是否需要根据目标环境生成两组代码?如果后者是真的,如何以理智的方式做到这一点,例如使用nu.studer.jooqgradle插件?

每当我尝试使用针对MariaDB服务器的H2数据库生成的源时,都会抛出这样的异常:

org.mariadb.jdbc.internal.util.dao.QueryException: SELECT command denied to user 'foo'@'localhost' for table 'FOO'
Query is: select `PUBLIC`.`FOO`.`ID`, `PUBLIC`.`FOO`.`NAME`, `PUBLIC`.`FOO`.`INFO` from `PUBLIC`.`FOO`
Run Code Online (Sandbox Code Playgroud)

我对H2和MariaDB使用相同的flyway初始化/迁移脚本.

h2 spring-jdbc mariadb jooq spring-boot

2
推荐指数
1
解决办法
520
查看次数

获取NamedParameterJdbctemplate的大小?

我正在处理一个涉及我编写查询以从数据库中获取数千条记录的问题。我将使用的查询将在WHERE条件中包含2个IN子句。

据我所知,这可能是有限的,因此请纠正我,对于此用例,我无法使用jdbctemplate。我将不得不转向NamedParameterJdbcTemplate,因为NamedParameterJdbcTemplate使我们可以灵活地使用IN子句。

现在,我正在寻找答案的问题如下。

问:> NamedParameterJdbcTemplate没有setFetchSize方法。有没有一种方法可以设置NamedParameterJdbcTemplate的获取大小?

问>是否有人对NamedParameterJdbcTemplate的默认获取大小有任何想法?对于JdbcTemplate,它设置为10。我知道。那NamedParameterJdbcTemplate呢?

Q>即使我使用NamedParameterJdbcTemplate,也无法解决我的问题,因为如果我们假设NamedParameterJdbcTemplate的获取大小也为10,则获取几千条记录仍会花费很多我的应用程序时间。

任何人都可以提出解决方案或指导我朝正确的方向发展吗?

java spring named-parameters spring-jdbc jdbctemplate

2
推荐指数
1
解决办法
2453
查看次数

春季:无法使用executeQuery()发出数据操作语句

我尝试使用句柄查询来更新SQL数据库中的表。

码:

    @Autowired
    private ProducerRepository producerRepository;

    public void update(Producer producer){

        String name = producer.getProducerName();
        long id = producer.getId();

//        producerRepository.save(producer); //this method works well.
        producerRepository.update(name, id); //handle attempt - throws exeption in this string
    }
Run Code Online (Sandbox Code Playgroud)

生产者资料库:

@Repository
    public interface ProducerRepository extends JpaRepository<Producer, Long>{

        @Query(nativeQuery = true, value = "UPDATE producer SET producer_name = :pName WHERE id = :id")
        Producer update(
                @Param("pName") String pName,
                @Param("id") long id
        );
    }
Run Code Online (Sandbox Code Playgroud)

producer实体的所有参数都是正确的,并且producerRepository.save(producer)运作良好。(也是我在控制台nameid字段中-好的)

因此,我可以将其保存producer …

java mysql spring spring-jdbc

2
推荐指数
2
解决办法
3056
查看次数

Spring JDBC:即使将行插入表中,也不会返回自动生成的ID

我正在尝试在表格中插入行 Taco并获取自动生成的ID。

当我尝试使用keyHolder.getKey().longValue()in saveTacoInfo方法获取密钥时,它会抛出NPE,但它会显示插入到Taco当我从H2-控制台对其进行检查时表。

我正在使用Spring Boot 2.1.0,Spring 5.1.2和嵌入式H2数据库。我该如何解决这个问题?

H2表架构:

create table if not exists Taco (
    id identity,
    name varchar(50) not null,
    createdAt timestamp not null
);
Run Code Online (Sandbox Code Playgroud)

Jdbc存储库实现:

package tacos.data;

import java.sql.Timestamp;
import java.sql.Types;
import java.util.Arrays;
import java.util.Date;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.PreparedStatementCreatorFactory;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;

import lombok.extern.slf4j.Slf4j;
import tacos.Taco;

@Slf4j
@Repository
public class JdbcTacoRepository implements TacoRepository {

    private JdbcTemplate jdbc;

    public JdbcTacoRepository(JdbcTemplate jdbc) {
        this.jdbc = jdbc;
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

java spring h2 spring-jdbc

2
推荐指数
1
解决办法
498
查看次数