1.添加jdbc的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2.配置数据库
2.1 配置数据库依赖(此处使用的为mysql)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2.2 在application.yml中配置数据库相关设置(类型,用户名密码等)
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/你的数据库名称?useUnicode=true&characterEncoding=utf-8&&useSSL=true
username: 你的用户名
password: 你的密码
3.创建模板类(即你数据库操作得到的结果集所需要转化为的类)
package com.example.demo.model;
import lombok.Data;
import lombok.RequiredArgsConstructor;
@Data
@RequiredArgsConstructor
public class Ingredient {
private final String id;
private final String name;
private final Type type;
public static enum Type {
WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE
}
}
4.定义一个接口(实际是对操作的一个抽象)
package com.example.demo.repository;
import com.example.demo.model.Ingredient;
public interface IngredientRepository {
Iterable<Ingredient> findAll();
Ingredient findOne(String id);
Ingredient save(Ingredient ingredient);
}
5.实现这个接口
package com.example.demo.data;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import com.example.demo.model.Ingredient;
import com.example.demo.repository.IngredientRepository;
@Repository
public class JdbcIngredientRepository implements IngredientRepository{
@Autowired
private JdbcTemplate jdbc;
@Override
public Iterable<Ingredient> findAll() {
return jdbc.query("Select id,name,type from Ingredient", this::mapRowToIngredient);
}
@Override
public Ingredient findOne(String id) {
return jdbc.queryForObject("Select id,name,type from Ingredient where id = ", this::mapRowToIngredient,id);
}
@Override
public Ingredient save(Ingredient ingredient) {
jdbc.update("insert into Ingredient (id,name,type) values (?,?,?)",ingredient.getId(),ingredient.getName(),ingredient.getType().toString());
return ingredient;
}
private Ingredient mapRowToIngredient(ResultSet rs,int rowNum) throws SQLException{
return new Ingredient(rs.getString("id"), rs.getString("name"),Ingredient.Type.valueOf(rs.getString("type")));
}
}