SpringData Jpa(一):SpringBoot整合实现基本增删改查
2020-01-11 14:55
549 查看
SpringBoot整合
1.依赖
<!--导入jpa依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!--MySQL驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency>
2.配置文件
#Mysql数据源配置 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/(数据库名字)?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=admin #JPA相关配置(默认的orm框架是hibernate) #项目启动生成数据库 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true
3.创建实体类
- 如果不存在该实体类的表 因为在配置文件开启了自动生成对应的表 所以就会自动该实体类的表
@Data //告诉jpa这是一个实体类,需要把它跟数据库中的表做映射 @Entity //使用注解建立实体类和数据表之间的对应关系 @Table(name = "article")//@Table建立了实体类和数据表的关系 name指向表名 public class Article { @Id//标识这是主键字段 //指定主键生成策略,GenerationType.IDENTITY就是对应到mysql中的数据自增策略 @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer aid; //使用@Column映射类的属性和数据表的字段关系 name指定表中的字段名 //当类的属性名和数据表的字段名一致时,此注解可省略 @Column(name = "author") private String author; private Date createTime; private String title; }
4.创建dao层
/** * 自定义接口需要继承 * JpaRepository<实体类的类型,实体类中的主键的类型>:基本的 增删改查、分页、排序操作 * JpaSpecificationExecutor<实体类的类型>:动态sql */ public interface ArticleDao extends JpaRepository<Article, Integer>, JpaSpecificationExecutor<Article> { }
基本使用
- 增删改查
@SpringBootTest @RunWith(SpringRunner.class) public class SpringDataJpaTest { @Autowired private ArticleDao articleDao; /** * 保存 */ @Test public void testSave() { Article article = new Article(); article.setTitle("t_1"); article.setAuthor("a_1"); article.setCreateTime(new Date()); articleDao.save(article); } /** * 删除 */ @Test public void testDelete() { articleDao.deleteById(2); } /** * 修改 */ @Test public void testUpdate() { Article article = new Article(); article.setAuthor("a_1"); article.setAid(1); //Spingdata Jpa的保存和修改使用的都是save方法 //关键来看传入的实体是否有主键 //---如果有主键,代表要修改 //---如果没有主键,代表要保存 articleDao.save(article); } /** * 查询主键 */ @Test public void testFindByAid() { Optional<Article> optional = articleDao.findById(1); System.out.println(optional.get()); } /** * 查询所有 */ @Test public void testFindAll() { List<Article> articles = articleDao.findAll(); for (Article article : articles) { System.out.println(article); } } }
- 批量操作
@SpringBootTest @RunWith(SpringRunner.class) public class SpringDataJpaCUDTest { @Autowired private ArticleDao articleDao; /** * 保存 */ @Test public void testSave() { Article article = new Article(); article.setTitle("t_1"); article.setAuthor("a_1"); article.setCreateTime(new Date()); //保存一个实体 articleDao.save(article); //保存一个实体,并且立即刷新缓存 //articleDao.saveAndFlush(article); } /** * 保存多个 */ @Test public void testSaveAll() { Article article1 = new Article(); article1.setTitle("t_1"); article1.setAuthor("a_1"); article1.setCreateTime(new Date()); Article article2 = new Article(); article2.setTitle("t_2"); article2.setAuthor("t_2"); article2.setCreateTime(new Date()); Article article3 = new Article(); article3.setTitle("t_3"); article3.setAuthor("a_3"); article3.setCreateTime(new Date()); List list = new ArrayList(); list.add(article1); list.add(article2); list.add(article3); //保存多个实体 articleDao.saveAll(list); } /** * 删除 */ @Test public void testDeleteOne(){ //1 根据主键删除 //articleDao.deleteById(13); //2 根据实体删除,但是这个实体必须要有主键 Article article = new Article(); article.setAid(13); articleDao.delete(article); } /** * 删除多个 */ @Test public void testDeleteAll(){ //1 删除所有 先查询--再一条条的删除 //articleDao.deleteAll(); //2 删除所有 一下子删除所有记录 //articleDao.deleteAllInBatch(); Article article1 = new Article(); article1.setAid(24); Article article2 = new Article(); article2.setAid(22); List list = new ArrayList(); list.add(article1); list.add(article2); //3 批量删除指定数据 一条语句搞定 //articleDao.deleteInBatch(list); //4 先一条条的查,然后再一条条的删除 articleDao.deleteAll(list); } }
- 注意 批量删除的时候注释的四个不同位置有不同效果
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 使用spring-data-jpa+spirngboot整合swagger+vuejs实现一套简单的增删改查demo
- SpringBoot-4. thymeleaf+jpa实现增删改查与登录验证
- Spring Boot中使用Spring-data-jpa实现数据库增删查改
- 文章标题spring-boot + spring-data-jpa 实现简单的增删改查
- Spring Boot 使用SpringData Jpa 实现简单的增删改查WEB项目
- springboot+springdata-jpa+vue+swagger ui2+axios实现前后端分离一套增删改查,分页+解决跨域问题
- SpringMVC+Spring Data JPA实现增删改查操作
- Spring Boot 使用SpringData Jpa 实现简单的增删改查WEB项目
- springboot+springdata-jpa+vue+swagger ui2+axios实现前后端分离一套增删改查,分页+解决跨域问题
- 使用spring boot 整合spring jpa做基于restful风格的增删改查(maven ,mysql)
- SpringBoot整合Spring Data JPA、MySQL、Druid并使用Mockito实现单元测试
- 前后端分离之SpringBoot2.x整合mybatis实现数据库的增删改查操作(一)
- 使用springboot+springdata-jpa+前台Html页面实现增删改查
- springboot 入门教程(6)--- 整合Spring data JPA实现CRUD(附源码)
- springboot+maven+springdata jpa +querydsl快速实现增删改查分页
- 前后端分离之SpringBoot2.x整合mybatis实现数据库的增删改查操作(二)
- springboot+springdata-jpa+vue+swagger ui2+axios实现前后端分离一套增删改查,分页+解决跨域问题
- idea+HBuilderX实现springboot+springdata-jpa+vue+axios前后端分离增删改查,分页+解决跨域问题的idea页面
- 在Spring Boot中使用Spring-data-jpa实现分页查询
- SpringBoot第二讲 利用Spring Data JPA实现数据库的访问(二)_分页和JpaSpecificationExecutor接口介绍