2019独角兽企业重金招聘Python工程师标准>>>
注意不要这样用 jdbcTemplate 取数据库中的 TIMESTAMP 日期,这样返回的日期会是当前日期,而不是数据库中查询出来的日期。
如数据库字段 create_time 为 TIMESTAMP 类型:
import java.util.Date;
String sql = "SELECT MAX(mtm.create_time) FROM t_message mtm";
Date result = jdbcTemplate.query(sql, paramMap, new BeanPropertyRowMapper<T>(Date.class));
// 上面那样写其实就相当于这样,无论数据库中是否能查询出结果
// Date result = new Date();
应该改成这样:
String sDate = jdbcTemplate.query(sql, paramMap, new BeanPropertyRowMapper<T>(String.class));
Date result = DateUtil.parse(sDate);
具体原因我尝试跟了一下代码,但感觉太复杂,跟不下去。。。
有知道具体原因的请告知,
2019独角兽企业重金招聘Python工程师标准>>> ...
JDBC(
Java
DataBase Connectivity )概念:
Java
数据库
连接,就是通过
Java
语言操作
数据库
。JDBC本质: 其实是官方(sun公司)定义的一套操作所有关系型
数据库
的规则,即接口。各个
数据库
厂商去实现这套接口,提供
数据库
驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包
中
的实现类。大致关系图如下:
使用JDBC一般步骤如下:我所用的MySQL是5.5版本的,所以我用的是5.x版本的jar包,如:mysql-connector-
java
-5.1.3
之前去连接一个
数据库
,我们注册驱动,得到连接对象,然后得到语句句柄,再来执行,这玩意有点麻烦,每次都要这样写一套,然后才能进行sql语句的查询和其他操作。
那么后来我们把连接对象与关闭对象这个工作给拿了出来,把需要里注册的
数据库
连接,用户名,密码,
数据库
名都放到一个properties的配置文件里面。
先来看这个配置文件utils.properties配置文件,这个文件直接放在了src目录下面
其实driver这个
数据库
驱动的注册完全可以省略,因为
数据库
管理接口在调用getConnection()
1.
问题
出现原因
由于
数据库
的时区和jdbc的时区不一致,所以在从
数据库
中
取
时间
类型
的
数据
时,
数据库
会自动转换时区为当前配置的时区,导致时间
数据
不一致
查看
数据库
设置的时区
show variables like '%time_zone%'
在springboot的application-*.yml上配置的
数据库
连接参数看jdbc指定的时区
2.解决方案 : 对从
数据库
拿到的时间进行时区转换
private Date ti
String sql = "select update_date from baidu_cloud.t_user";
ResultSet rs =
JDBCTemplate
.executeQuery(sql);
System.out.pr...
spring内
jdbcTemplate
查询列表
Timestamp
类型
返回前端为
时间戳
、及org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: No serializer found for class
java
.io.FileDescriptor and no properties discovered to create BeanSerializer.
一、
jdbcTemplate
从
jdbcTemplate
中
查询出来的
日期
值为 :2021-08-26 00:00:00
jdbcTemplate
.query(sql, (RowMapper<Persion>) (resultSet, index) -> {
Persion p = new Persion();
p.setBirthday(resultSet.getDate("birthday"));
System.out.println(p.getBirthday()); // 假设格式化之后
import
java
.sql.DriverManager;
import
java
.sql.PreparedStatement;
import
java
.sql.ResultSet;
import
java
.sql.SQLE...
四、
JdbcTemplate
操作
数据库
(查询返回某个值)
五、
JdbcTemplate
操作
数据库
(查询返回对象)
六、
JdbcTemplate
操作
数据库
(查询返回集合)
七、
JdbcTemplate
操作
数据库
(批量操作)
JdbcTemplate
基本使用
01-
JdbcTemplate
基本使用-概述(了解)
JdbcTemplate
是spring框架
中
提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型
数据
的
JdbcTemplate
和Hibernate
Template
,操作nosql
数据库
的Redis
Template
,操作消息队列的Jms
Template
等等。
02-
JdbcTemplate
基本使用-开发步骤(理解)
①导入spring-jdbc和spr
JdbcTemplate
是Spring Framework
中
的一个核心类,它可以通过简化JDBC的使用来简化
数据库
访问。使用
JdbcTemplate
连接
数据库
需要以下步骤:
1. 在Spring配置文件
中
配置
数据
源,例如使用org.apache.commons.dbcp.BasicDataSource。
2. 在Spring配置文件
中
配置
JdbcTemplate
Bean,将
数据
源注入到
JdbcTemplate
中
。
3. 在
Java
代码
中
使用
JdbcTemplate
对象进行
数据库
操作,例如查询、插入、更新和删除。
以下是一个使用
JdbcTemplate
连接
数据库
的示例代码:
@Autowired
private
JdbcTemplate
jdbcTemplate
;
public void queryData() {
String sql = "SELECT * FROM users";
List<Map<String, Object>> userList =
jdbcTemplate
.queryForList(sql);
for (Map<String, Object> user : userList) {
System.out.println(user.get("name"));
public void insertData(String name, int age) {
String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
jdbcTemplate
.update(sql, name, age);
public void updateData(int id, String name) {
String sql = "UPDATE users SET name = ? WHERE id = ?";
jdbcTemplate
.update(sql, name, id);
public void deleteData(int id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate
.update(sql, id);
在这个示例
中
,我们使用@Autowired注解将
JdbcTemplate
对象注入到
Java
类
中
,并使用queryForList、update方法进行
数据库
操作。当我们查询
数据
时,我们使用queryForList方法将查询结果转换成一个List<Map<String, Object>>
类型
的对象,其
中
每一个Map对象代表一行查询结果。当我们插入、更新和删除
数据
时,我们使用update方法进行相应的操作。在update方法
中
,我们使用?号作为占位符,每一个?号对应一个参数,参数的值在方法的后面依次传入。