- 浏览: 188679 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. Spring Data Jpa简介
2. Spring Data Jpa基本crud实现
3. 自定义查询@Query
4. 动态查询Specification使用
JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。 SpringDataJPA框架,主要针对的就是Spring唯一没有简化到的业务逻辑代码,至此,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给SpringDataJPA来帮你完成!
2. Spring Data Jpa基本crud实现
新建项目SpringDataJpaCrud pom.xml引入jpa和mysql驱动支持 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> application.properties server.port=8000 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/springboot spring.datasource.username=root spring.datasource.password=root spring.jpa.hibernate.ddl-auto=update spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.show-sql=true book.java package com.andrew.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="t_book") public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(length=100) private String name; @Column(length=50) private String author; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } } HelloWorldApplication.java右键Run As选择Spring Boot App 项目成功启动 数据库自动创建t_book表 insert into t_book values(1, 'author01', 'java编程思想'); insert into t_book values(2, 'author02', 'mysql必知必会'); insert into t_book values(3, 'author03', 'oracle必知必会'); 将application.properties修改成application.yml server: port: 8000 context-path: / spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/springboot username: root password: root jpa: hibernate: ddl-auto: update database-platform: org.hibernate.dialect.MySQL5InnoDBDialect show-sql: true src/main/java/com/andrew/dao/BookDao.java 要求实现JpaRepository package com.andrew.dao; import org.springframework.data.jpa.repository.JpaRepository; import com.andrew.entity.Book; public interface BookDao extends JpaRepository<Book, Integer> { } src/main/java/com/andrew/controller/BookController.java @GetMapping(value="xxx")类似@RequestMapping(value="xxx",method=RequestMethod.GET) @PostMapping(value="xxx")类似@RequestMapping(value="xxx",method=RequestMethod.POST) package com.andrew.controller; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import com.andrew.dao.BookDao; import com.andrew.entity.Book; @Controller @RequestMapping("/book") public class BookController { @Resource private BookDao bookDao; @RequestMapping("/list") public ModelAndView list() { ModelAndView mv = new ModelAndView(); mv.addObject("bookList", bookDao.findAll()); mv.setViewName("bookList"); return mv; } @RequestMapping(value = "/add", method = RequestMethod.POST) public String add(Book book) { bookDao.save(book); return "forward:/book/list"; } @RequestMapping("/preUpdate/{id}") public ModelAndView preUpdate(@PathVariable("id") Integer id) { ModelAndView mv = new ModelAndView(); mv.addObject("book", bookDao.getOne(id)); mv.setViewName("bookUpdate"); return mv; } @PostMapping(value = "/update") public String update(Book book) { bookDao.save(book); return "forward:/book/list"; } @GetMapping("/delete") public String delete(Integer id) { bookDao.deleteById(id); return "forward:/book/list"; } } src/main/resources/templates/bookList.ftl <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图书管理</title> </head> <body> <a href="/bookAdd.html">添加</a> <table> <tr> <th>编号</th> <th>图书名称</th> <th>图书作者</th> <th>操作</th> </tr> <#list bookList as book> <tr> <td>${book.id}</td> <td>${book.name}</td> <td>${book.author}</td> <td> <a href="/book/preUpdate/${book.id}">修改</a> <a href="/book/delete?id=${book.id}">删除</a> </td> </tr> </#list> </table> </body> </html> src/main/resources/templates/bookUpdate.ftl <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图书修改</title> </head> <body> <form action="/book/update" method="post"> <input type="hidden" name="id" value="${book.id}"/> 图书名称:<input type="text" name="name" value="${book.name}"/><br/> 图书作者:<input type="text" name="author" value="${book.author}"/><br/> <input type="submit" value="提交"/> </form> </body> </html> src/main/webapp/bookAdd.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="/book/add" method="post"> 图书名称:<input type="text" name="name"/><br/> 图书作者:<input type="text" name="author"/><br/> <input type="submit" value="提交"/> </form> </body> </html> HelloWorldApplication.java右键Run As选择Spring Boot App http://localhost:8000/book/list 添加 click http://localhost:8000/bookAdd.html abc 123 提交 http://localhost:8000/book/add 修改 click abcdef 123456 提交 http://localhost:8000/book/update 删除 click http://localhost:8000/book/delete?id=4
3. 自定义查询@Query
4. 动态查询Specification使用
bookList.ftl <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图书管理</title> </head> <body> <a href="/bookAdd.html">添加</a> <form method="post" action="/book/specification"> 图书名称:<input type="text" name="name" /> 图书作者:<input type="text" name="author" /> <input type="submit" value="搜索"/> </form> <table> <tr> <th>编号</th> <th>图书名称</th> <th>图书作者</th> <th>操作</th> </tr> <#list bookList as book> <tr> <td>${book.id}</td> <td>${book.name}</td> <td>${book.author}</td> <td> <a href="/book/preUpdate/${book.id}">修改</a> <a href="/book/delete?id=${book.id}">删除</a> </td> </tr> </#list> </table> </body> </html> src/main/java/com/andrew/dao/BookDao.java 继承JpaSpecificationExecutor<Book> package com.andrew.dao; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import com.andrew.entity.Book; public interface BookDao extends JpaRepository<Book, Integer>, JpaSpecificationExecutor<Book> { @Query("select b from Book b where b.name like %?1%") public List<Book> findByName(String name); @Query(value="select * from t_book order by RAND() limit ?1",nativeQuery=true) public List<Book> randomList(Integer n); } src/main/java/com/andrew/controller/BookController.java package com.andrew.controller; import java.util.List; import javax.annotation.Resource; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.andrew.dao.BookDao; import com.andrew.entity.Book; @Controller @RequestMapping("/book") public class BookController { @Resource private BookDao bookDao; @RequestMapping("/list") public ModelAndView list() { ModelAndView mv = new ModelAndView(); mv.addObject("bookList", bookDao.findAll()); mv.setViewName("bookList"); return mv; } @RequestMapping(value = "/add", method = RequestMethod.POST) public String add(Book book) { bookDao.save(book); return "forward:/book/list"; } @RequestMapping("/preUpdate/{id}") public ModelAndView preUpdate(@PathVariable("id") Integer id) { ModelAndView mv = new ModelAndView(); mv.addObject("book", bookDao.getOne(id)); mv.setViewName("bookUpdate"); return mv; } @PostMapping(value = "/update") public String update(Book book) { bookDao.save(book); return "forward:/book/list"; } @GetMapping("/delete") public String delete(Integer id) { bookDao.deleteById(id); return "forward:/book/list"; } @ResponseBody @GetMapping("/queryByName") public List<Book> queryByName(){ return bookDao.findByName("编程"); } @ResponseBody @GetMapping("/randomList") public List<Book> randomList(){ return bookDao.randomList(2); } @RequestMapping("/specification") public ModelAndView specification(Book book){ ModelAndView mv = new ModelAndView(); List<Book> bookList = bookDao.findAll(new Specification<Book>() { @Override public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> query, CriteriaBuilder cb) { Predicate predicate = cb.conjunction(); if (book != null) { if (book.getName() != null && !"".equals(book.getName())) { predicate.getExpressions().add(cb.like(root.get("name"), "%" + book.getName() + "%")); } if (book.getAuthor() != null && !"".equals(book.getAuthor())) { predicate.getExpressions().add(cb.like(root.get("author"), "%" + book.getAuthor() + "%")); } } return predicate; } }); mv.addObject("bookList", bookList); mv.setViewName("bookList"); return mv; } } http://localhost:8000/book/queryByName [{"id":1,"name":"java编程思想","author":"author01"}] http://localhost:8000/book/randomList [{"id":3,"name":"oracle必知必会","author":"author03"},{"id":2,"name":"mysql必知必会","author":"author02"}] [{"id":1,"name":"java编程思想","author":"author01"},{"id":2,"name":"mysql必知必会","author":"author02"}] http://localhost:8000/book/list java 搜索 1 java编程思想 author01 修改 删除 必知必会 搜索 2 mysql必知必会 author02 修改 删除 3 oracle必知必会 author03 修改 删除
发表评论
-
报错Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not se
2019-02-17 12:22 4017WARN 12992 --- [ ma ... -
报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more t
2019-02-17 12:22 552mysql的时区错误问题: The server time ... -
报错Error executing DDL via JDBC Statement
2019-02-17 12:22 1231使用SpringDataJPA总是创建hibernate_ ... -
pom.xml报错<failOnMissingWebXml> is set to true
2019-02-15 13:47 348pom.xml报错 <failOnMissin ... -
SpringBoot切面AOP
2019-02-15 09:40 3831. SpringBoot切面AOP SpringBoo ... -
SpringBoot表单验证
2019-02-15 09:36 3831. SpringBoot表单验证@Valid 新建项目 ... -
SpringBoot事务管理
2019-02-15 09:28 3321. SpringBoot之事物管理@Transactiona ... -
SpringBoot支持MVC
2019-02-14 09:27 3051) @RequestMapping配置url映射 2) @ ... -
SpringBoot配置项目属性
2019-02-14 09:26 3841. 项目内置属性 配置文件application.pr ... -
SpringBoot导入
2019-02-13 13:33 4241. SpringBoot简介 Spring B ...
相关推荐
本系统采用SpringBoot、SpringDataJPA以及Mysql数据库,这三大技术的组合为实现这一目标提供了强大支持。 **SpringBoot** 是一个用于简化Spring应用初始搭建以及开发过程的框架。它集成了大量常用的第三方库配置,...
使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速开发迭代,可用于开发模板,项目经过测试,可完美运行! 使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速...
仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot...
《构建基于SpringBoot、SpringDataJPA、Thymeleaf和Shiro的高效管理平台框架》 在现代Web开发中,高效、稳定的管理平台框架是不可或缺的。本框架结合了SpringBoot、SpringDataJPA、Thymeleaf和Shiro等技术,构建了...
本系统是基于Thymeleaf+SpringBoot+SpringDataJPA实现的的中小医院信息管理系统。简单实现了挂号收费,门诊管理,划价收费,药房取药,体检管理,药房管理,系统维护等基础功能。就诊卡提供了手动和读卡两种方式录入...
基于SpringBoot+Spring Data JPA+mybatis的仓库管理系统 基于SpringBoot+Spring Data JPA+mybatis的仓库管理系统 基于SpringBoot+Spring Data JPA+mybatis的仓库管理系统 基于SpringBoot+Spring Data JPA+mybatis的...
Java本科毕业设计-Springboot+Spring Data JPA 仓库管理系统,也可做期末大作业,课程设计。Java本科毕业设计-Springboot+Spring Data JPA 仓库管理系统,也可做期末大作业,课程设计。Java本科毕业设计-Springboot+...
在 "springboot+spring data jpa+thymeleaf学习web项目整合demo源码" 中,我们可以学习到以下几个关键知识点: 1. **Spring Boot 整合**:Spring Boot 可以与多个框架集成,如 Spring MVC、Spring Data 和 ...
**SpringBoot整合SpringData JPA** 是一个现代Java开发中的常见技术栈,它结合了Spring Boot的便捷性和Spring Data JPA的数据访问效率。Spring Boot简化了应用的初始搭建以及配置,而Spring Data JPA则是Spring ...
1、基于SpringBoot+Spring Data JPA+mybatis的仓库管理系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考...
在SpringBoot项目中,pom.xml用于声明SpringBoot起步依赖、SpringData JPA、Scala库、MySQL驱动等相关依赖,使得Maven能够自动下载和管理这些依赖。 【src】 src目录是Java项目中的源代码目录,通常包含main和test...
SpringBoot和SpringData JPA是Java开发中的两个关键框架,它们极大地简化了Web应用程序的构建过程,特别是数据库操作。SpringBoot以其"开箱即用"的特性,减少了配置工作,而SpringData JPA则提供了对Java ...
综合上述技术,这个项目可能是一个使用SpringBoot作为基础框架,通过Spring Data JPA进行数据库操作,使用FreeMarker作为模板引擎展示页面,Shiro负责安全控制,而Log4jdbc则用于记录数据库查询日志的Web应用。...
该项目是一款基于SpringBoot,Spring Data JPA,Shiro,BootStrap,Layui的前后端项目,旨在为健身房提供一个高效、便捷的管理系统,支持会员管理、课程预约、数据统计等功能,帮助健身房更好地管理和使用资源。
《仓库管理系统:SpringBoot、Spring Data JPA与MyBatis的整合应用》 在现代企业信息化建设中,仓库管理系统是不可或缺的一部分,它帮助企业有效管理库存,提高运营效率。本项目采用SpringBoot、Spring Data JPA...
【标题】"webmagic+springboot+SpringDataJpa.zip"是一个包含集成WebMagic爬虫框架、Spring Boot和Spring Data JPA技术的项目压缩包。这个项目旨在展示如何利用这些技术进行定时抓取网站数据,并将抓取到的数据存储...
SpringData JPA支持通过简单的注解和查询方法,实现对数据库的CRUD操作。通过Repository接口,开发者无需编写大量的DAO层代码,极大地减少了重复工作,提高了代码的可读性和可维护性。 **SpringSecurity** Spring...
《仓库管理系统:基于SpringBoot与Spring Data JPA的实现》 仓库管理系统是现代企业运营中的重要组成部分,它负责对库存物品进行高效的管理,包括入库、出库、库存盘点等操作。本项目采用SpringBoot框架结合Spring ...
在开发Java应用时,Spring Boot和Spring Data JPA是两个非常重要的框架,它们极大地简化了项目的构建和数据访问。Spring Boot提供了快速启动和配置的机制,而Spring Data JPA则是Spring框架的一部分,专注于数据库...