一、添加依赖
1.新增Mysql驱动(Mysql依赖)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
2.操作数据库的工具(spring-boot-starter-data-jpa)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
3.自动写getter和setter方法的工具
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
需要配合lombok插件使用
二、配置数据库信息
1.找到resources文件下的application.properties文件,并修改其后缀名为 .yml
注:为什么使用.yml格式而不是.properties格式?
因为.yml格式可以使配置更加简洁
2.配置数据库信息
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://192.168.5.38:3306/sell?characterEncoding=utf-8&useSSL=false
jpa:
show-sql: true
三、新建数据表映射过来的对象
package com.bdu.dataobject;
import lombok.Data;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.util.Date;
@Entity
@DynamicUpdate
@Data
public class ProductCategory {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer categoryId;
private String categoryName;
private Integer categoryType;
public ProductCategory() {
}
public ProductCategory(String categoryName, Integer categoryType) {
this.categoryName = categoryName;
this.categoryType = categoryType;
}
}
四、Dao层
1.新建一个包,命名为com.bdu.repository
2.在repository包下新建ProductCategoryRepository接口继承JpaRepository
3.编写代码
package com.bdu.repository;
import com.bdu.dataobject.ProductCategory;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @author wanqing
* @date 2022/1/17 17:26
*/
public interface ProductCategoryRepository extends JpaRepository<ProductCategory,Integer> {
// 查看类目列表
List<ProductCategory> findByCategoryTypeIn(List<Integer> categoryType);
}
五、service层
1.新建一个包命名为com.bdu.service
2.在service包中新建CategoryService接口
package com.bdu.service;
import com.bdu.dataobject.ProductCategory;
import java.util.List;
public interface CategoryService {
//查询一条记录
ProductCategory findOne(Integer categoryId);
//查看类目列表
List<ProductCategory> findAll();
//买家端
List<ProductCategory> findByCategoryTypeIn(List<Integer> categoryTypeList);
//卖家端-新增、更新
ProductCategory save(ProductCategory productCategory);
}
3.新建com.bdu.service.impl包存放接口实现类
4.在com.bdu.service.impl包中新建CategoryService接口的实现类CategoryServiceImpl
package com.bdu.service.impl;
import com.bdu.dataobject.ProductCategory;
import com.bdu.repository.ProductCategoryRepository;
import com.bdu.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CategoryServiceImpl implements CategoryService {
@Autowired
private ProductCategoryRepository repository;
@Override
public ProductCategory findOne(Integer categoryId) {
// return repository.findById(categoryId).get();
return repository.findById(categoryId).get();
}
@Override
public List<ProductCategory> findAll() {
return repository.findAll();
}
@Override
public List<ProductCategory> findByCategoryTypeIn(List<Integer> categoryTypeList) {
return repository.findByCategoryTypeIn(categoryTypeList);
}
@Override
public ProductCategory save(ProductCategory productCategory) {
return repository.save(productCategory);
}
}
六、遇到的错误
1)java: 无法将接口 org.springframework.data.repository.query.QueryByExampleExecutor中的方法 findOne应用到给定类型;
2) 原因:ProductCategoryRepositoryTest类不是public类
- The class com.bdu.repository.ProductCategoryRepositoryTest is not public.
- Test class should have exactly one public constructor
修改后