在Spring Boot中,数据持久化有好几种方案,常见的有JdbcTemplate、MyBatis,JPA,在这些方案中,最简单的就是Spring自带的JdbcTemplate。JdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便、友好,本来说说这个东西的使用。
Maveny依赖
<!--jdbc依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
application.properties配置文件
#数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/gpsmanager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
JdbcTemplate主要提供五类方法
-
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
-
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
-
query方法及queryForXXX方法:用于执行查询相关语句;
-
call方法:用于执行存储过程、函数相关语句。
JdbcTemplate示例代码参考
package com.example.jdbctemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Repository
public class JDBCTemplateDao {
@Autowired
private JdbcTemplate jdbcTemplate;
/**
* JdbcTemplate基本使用示例
*/
public void jdbcTemplateTest(){
//1、通过update插入数据
String sql="insert into user (name,sex,account,password,tm,status) values (?,?,?,?,?,?)";
jdbcTemplate.update(sql, new Object[]{"林晓月","女","linxiaoyue","123456",new Date(),-1});
//2、通过update修改数据
sql="update user set password=?,status=? where name='林晓月'";
jdbcTemplate.update(sql,new Object[]{"111111",0});
//3、批量插入
sql="insert into user (name,sex,account,password,tm,status) values (?,?,?,?,?,?)";
List<Object[]> batchArgs=new ArrayList<>();
batchArgs.add(new Object[]{"程潇","女","chengxiao","123456",new Date(),0});
batchArgs.add(new Object[]{"赵正涛","男","zhaozhengtao","123456",new Date(),0});
batchArgs.add(new Object[]{"李志强","男","lizhiqiang","123456",new Date(),0});
jdbcTemplate.batchUpdate(sql, batchArgs);
//4、删除数据
sql="delete from user where name=?";
jdbcTemplate.update(sql,"李志强");
//5、查单条数据,返回Map结构
Map<String,Object> map=jdbcTemplate.queryForMap("select * from user where name=?","林晓月");
//6、查多条数据,返回List<Map>
List<Map<String,Object>> maps=jdbcTemplate.queryForList("select * from user");
//创建实体映射对象,使用BeanProperytRowMapper要求sql数据查询出来的列和实体属性需要一一对应。如果数据中列明和属性名不一致,在sql语句中需要用as重新取一个别名
RowMapper<User> rowMapper=new BeanPropertyRowMapper<>(User.class);
//7、查单条数据,返回实体对象
User user=jdbcTemplate.queryForObject("select * from user where name=?",rowMapper,"林晓月");
//8、查多条数据,返回实体对象集合
List<User> users=jdbcTemplate.query("select * from user",rowMapper);
//9、/获取某个记录某列或者count、avg、sum等函数返回唯一值
sql="select count(*) from user";
int count= jdbcTemplate.queryForObject(sql, Integer.class);
}
}