连接实验一的数据库,操作商品表,利用JdbcTemplate进行增、删、改、查操作。
时间: 2024-02-01 16:02:47 浏览: 65
好的,让我们一步步来进行操作。
首先,需要在项目中引入JdbcTemplate。如果你是使用Spring Boot创建的项目,JdbcTemplate已经包含在`spring-boot-starter-jdbc`依赖中,无需再次引入。如果你使用的是普通的Spring项目,需要在Maven或Gradle配置文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
```
或者
```groovy
implementation 'org.springframework:spring-jdbc:5.2.5.RELEASE'
```
接下来,我们需要在项目的配置文件中添加数据库的连接信息,例如:
```properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
```
其中,`driver-class-name`是数据库驱动名称,`url`是数据库连接地址,`username`和`password`是数据库的用户名和密码。
接下来,我们可以在代码中使用JdbcTemplate进行增、删、改、查操作。以操作商品表为例,假设商品表的结构如下:
```sql
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
那么,可以定义一个`Product`类来映射商品表:
```java
public class Product {
private Long id;
private String name;
private BigDecimal price;
private LocalDateTime createTime;
// getter/setter省略
}
```
接下来,我们可以定义一个`ProductDao`类来操作商品表:
```java
@Repository
public class ProductDao {
@Autowired
private JdbcTemplate jdbcTemplate;
/**
* 新增商品
*/
public void addProduct(Product product) {
String sql = "INSERT INTO product (name, price, create_time) VALUES (?, ?, ?)";
jdbcTemplate.update(sql, product.getName(), product.getPrice(), product.getCreateTime());
}
/**
* 删除商品
*/
public void deleteProduct(Long id) {
String sql = "DELETE FROM product WHERE id = ?";
jdbcTemplate.update(sql, id);
}
/**
* 修改商品
*/
public void updateProduct(Product product) {
String sql = "UPDATE product SET name = ?, price = ?, create_time = ? WHERE id = ?";
jdbcTemplate.update(sql, product.getName(), product.getPrice(), product.getCreateTime(), product.getId());
}
/**
* 查询商品列表
*/
public List<Product> listProducts() {
String sql = "SELECT id, name, price, create_time FROM product";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Product.class));
}
/**
* 根据ID查询商品
*/
public Product getProductById(Long id) {
String sql = "SELECT id, name, price, create_time FROM product WHERE id = ?";
return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(Product.class));
}
}
```
其中,`@Repository`注解用于声明该类是一个数据访问对象(DAO),`@Autowired`注解用于自动注入`JdbcTemplate`对象。`addProduct`、`deleteProduct`、`updateProduct`方法分别用于新增、删除、修改商品,`listProducts`方法用于查询商品列表,`getProductById`方法用于根据ID查询商品。
最后,我们可以在Controller中调用`ProductDao`类的方法来操作商品表:
```java
@RestController
@RequestMapping("/product")
public class ProductController {
@Autowired
private ProductDao productDao;
/**
* 新增商品
*/
@PostMapping
public void addProduct(@RequestBody Product product) {
productDao.addProduct(product);
}
/**
* 删除商品
*/
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productDao.deleteProduct(id);
}
/**
* 修改商品
*/
@PutMapping("/{id}")
public void updateProduct(@PathVariable Long id, @RequestBody Product product) {
product.setId(id);
productDao.updateProduct(product);
}
/**
* 查询商品列表
*/
@GetMapping
public List<Product> listProducts() {
return productDao.listProducts();
}
/**
* 根据ID查询商品
*/
@GetMapping("/{id}")
public Product getProductById(@PathVariable Long id) {
return productDao.getProductById(id);
}
}
```
以上就是利用JdbcTemplate进行增、删、改、查操作的完整代码。需要注意的是,本例中使用了`@RestController`、`@PostMapping`、`@DeleteMapping`、`@PutMapping`、`@GetMapping`等注解,需要引入`spring-web`依赖。
阅读全文