Spring Boot整合Spring Data JPA过程解析
更新时间:2019年10月07日 09:00:34 作者:行之间
这篇文章主要介绍了Spring Boot整合Spring Data JPA过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring Boot整合Spring Data JPA
1)加入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
2)增加配置(application.properties)
server.port=8080 server.servlet.context-path=/ # database configuration spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/blog?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123 # jpa configuration # 更新或者创建数据库表结构 spring.jpa.hibernate.ddl-auto=update # 控制台打印sql语句 spring.jpa.show-sql=true spring.jpa.open-in-view=false # log configuration logging.level.root=info
3)编写一个实体类(bean)和数据表进行映射,并且配置好映射关系
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.validation.constraints.NotBlank; /** * 使用JPA注解配置映射关系 * Created by zxf on 2019年9月30日 */ @Entity // 告诉JPA这是一个实体类(和数据库映射的类) @Table(name = "t_type") // @Table来指定和哪个数据表对应,如果省略默认表名就是类名首字母小写 public class Type { @Id // 表明这是一个主键 @GeneratedValue(strategy = GenerationType.IDENTITY) // 自增主键 private Long id; @Column(name = "last_name", length = 50) // 这是和数据表对应的一个列,省略默认列名就是属性名 private String name; }
4)编写一个Dao接口来操作实体类对应的数据表
import org.springframework.data.jpa.repository.JpaRepository; /** * Created by zxf on 2019年10月1日 */ // 第一个泛型表示操作的类是Type,第二个泛型Long表示Type的主键id为Long类型 public interface TypeRepository extends JpaRepository<Type, Long> { // 定义自己的方法 Type findTypeByName(String name); }
5)service层调用测试
import java.util.List; import java.util.Optional; import javax.transaction.Transactional; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import com.fei.NotFoundException; import com.fei.po.Type; import com.fei.repository.TypeRepository; import com.fei.service.TypeService; /** * Created by zxf on 2019年10月1日 */ @Service @Transactional public class TypeServiceImpl implements TypeService { @Autowired private TypeRepository typeRepository; /** * 保存一个分类 * * @param type * @return */ @Override public Type saveType(Type type) { return typeRepository.save(type); } /** * 根据id获得一个分类对象 * * @param id * @return */ @Override public Type getType(Long id) { return typeRepository.findById(id).get(); } /** * 根据分页参数查询一个分类列表 * * @param pageable * @return */ @Override public Page<Type> listType(Pageable pageable) { return typeRepository.findAll(pageable); } /** * 更新分类 * * @param id * @param type * @return */ @Override public Type updateType(Long id, Type type) { Type t = typeRepository.findById(id).get(); if (t == null) { throw new NotFoundException("类型不存在"); } BeanUtils.copyProperties(type, t); return typeRepository.save(t); } /** * 根据id删除一个分类 * * @param id */ @Override public void deleteType(Long id) { typeRepository.deleteById(id); } /** * 根据名字查询一个分类对象 * * @param name * @return */ @Override public Type getTypeByName(String name) { return typeRepository.findTypeByName(name); } /** * 不带参数的查询所有分类 * * @return */ @Override public List<Type> listType() { return typeRepository.findAll(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Java集合框架之List ArrayList LinkedList使用详解刨析
早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同2021-10-10
最新评论