Spring Boot整合Spring Data JPA过程解析
SpringBoot整合SpringDataJPA
1)加入依赖
org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java runtime
2)增加配置(application.properties)
server.port=8080 server.servlet.context-path=/ #databaseconfiguration 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 #jpaconfiguration #更新或者创建数据库表结构 spring.jpa.hibernate.ddl-auto=update #控制台打印sql语句 spring.jpa.show-sql=true spring.jpa.open-in-view=false #logconfiguration logging.level.root=info
3)编写一个实体类(bean)和数据表进行映射,并且配置好映射关系
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.Table;
importjavax.validation.constraints.NotBlank;
/**
*使用JPA注解配置映射关系
*Createdbyzxfon2019年9月30日
*/
@Entity//告诉JPA这是一个实体类(和数据库映射的类)
@Table(name="t_type")//@Table来指定和哪个数据表对应,如果省略默认表名就是类名首字母小写
publicclassType{
@Id//表明这是一个主键
@GeneratedValue(strategy=GenerationType.IDENTITY)//自增主键
privateLongid;
@Column(name="last_name",length=50)//这是和数据表对应的一个列,省略默认列名就是属性名
privateStringname;
}
4)编写一个Dao接口来操作实体类对应的数据表
importorg.springframework.data.jpa.repository.JpaRepository; /** *Createdbyzxfon2019年10月1日 */ //第一个泛型表示操作的类是Type,第二个泛型Long表示Type的主键id为Long类型 publicinterfaceTypeRepositoryextendsJpaRepository{ //定义自己的方法 TypefindTypeByName(Stringname); }
5)service层调用测试
importjava.util.List;
importjava.util.Optional;
importjavax.transaction.Transactional;
importorg.springframework.beans.BeanUtils;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.data.domain.Page;
importorg.springframework.data.domain.Pageable;
importorg.springframework.stereotype.Service;
importcom.fei.NotFoundException;
importcom.fei.po.Type;
importcom.fei.repository.TypeRepository;
importcom.fei.service.TypeService;
/**
*Createdbyzxfon2019年10月1日
*/
@Service
@Transactional
publicclassTypeServiceImplimplementsTypeService{
@Autowired
privateTypeRepositorytypeRepository;
/**
*保存一个分类
*
*@paramtype
*@return
*/
@Override
publicTypesaveType(Typetype){
returntypeRepository.save(type);
}
/**
*根据id获得一个分类对象
*
*@paramid
*@return
*/
@Override
publicTypegetType(Longid){
returntypeRepository.findById(id).get();
}
/**
*根据分页参数查询一个分类列表
*
*@parampageable
*@return
*/
@Override
publicPagelistType(Pageablepageable){
returntypeRepository.findAll(pageable);
}
/**
*更新分类
*
*@paramid
*@paramtype
*@return
*/
@Override
publicTypeupdateType(Longid,Typetype){
Typet=typeRepository.findById(id).get();
if(t==null){
thrownewNotFoundException("类型不存在");
}
BeanUtils.copyProperties(type,t);
returntypeRepository.save(t);
}
/**
*根据id删除一个分类
*
*@paramid
*/
@Override
publicvoiddeleteType(Longid){
typeRepository.deleteById(id);
}
/**
*根据名字查询一个分类对象
*
*@paramname
*@return
*/
@Override
publicTypegetTypeByName(Stringname){
returntypeRepository.findTypeByName(name);
}
/**
*不带参数的查询所有分类
*
*@return
*/
@Override
publicListlistType(){
returntypeRepository.findAll();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。