Springboot续之Data JPA
1、pom.xml中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2、application.properties中添加配置:
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true //显示查询语句
3、实体类中:3个注解
@Entity
public class Product {
@Id
@GeneratedValue(strategy=GenerationType.AUTO) //策略
private Integer produceId;
private String produceName;
private Double producePrice;
4、Reponsity基本使用
a、service层
接口:
public interface IProductService {
List<Product>findAll();
}
接口的实现类:
@Service
public class ProductService implements IProductService{
@Resource
private ProductRepository productRepository;
@Override
public List<Product> findAll() {
// TODO Auto-generated method stub
return productRepository.findAll();
}
}
b、domain层中:
@Repository
public interface ProductRepository extends JpaRepository<Product, Integer> {
}
b、控制器中
@Controller //相当于@Controller和@Responsebody
@RequestMapping(value={"","/index"})
public class IndexController {
@Resource
private ProductService productService;
@RequestMapping(value="/demo02")
public String demo02(Model model){
List<Product>list= new ArrayList<Product>();
model.addAttribute("productList", productService.findAll());
return "index/demo02";
}
}
c、复制demo01为demo02。运行,查找所有数据,测试成功。
不需要创建数据库表,数据库表会直接直接创建。只需要填写数据就好。
domain层中继承的JpaRepository接口中,已经有好几个数据库操作方法,JpaRepository又继承PagingAndSortingRepository,PagingAndSortingRepository又继承CrudRepository,这几个接口有好多操作数据库方法,直接用就可以了。常用的方法有:
List<Entity>findAll();
Optional<Entity> findOne(ID);
void save(Entity);
void delete(Entity);
Long count();
boolean exists(ID);
分页查询:
Page<Product>findAll(Pageable pageable);
控制器中:
自定义查询:
ProductRespository中:
@Modifying
@Query("from Product p where p.productId=5")
List<Product>myProduct();