IT序号网

springboot2.x整合JPA知识解答

luoye 2021年06月14日 数据库 139 0

项目结构

pom


   
  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4. <modelVersion>4.0.0 </modelVersion>
  5. <groupId>com.pwl.springboot-jpa </groupId>
  6. <artifactId>springboot-jpa </artifactId>
  7. <packaging>war </packaging>
  8. <version>0.0.1-SNAPSHOT </version>
  9. <name>Mybatis Maven Webapp </name>
  10. <url>http://maven.apache.org </url>
  11. <parent>
  12. <groupId>org.springframework.boot </groupId>
  13. <artifactId>spring-boot-starter-parent </artifactId>
  14. <version>2.0.1.RELEASE </version>
  15. </parent>
  16. <dependencies>
  17. <dependency>
  18. <groupId>junit </groupId>
  19. <artifactId>junit </artifactId>
  20. <scope>test </scope>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework.boot </groupId>
  24. <artifactId>spring-boot-starter-web </artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot </groupId>
  28. <artifactId>spring-boot-starter-data-jpa </artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>mysql </groupId>
  32. <artifactId>mysql-connector-java </artifactId>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot </groupId>
  36. <artifactId>spring-boot-devtools </artifactId>
  37. <optional>true </optional>
  38. </dependency>
  39. </dependencies>
  40. <build>
  41. <plugins>
  42. <plugin>
  43. <groupId>org.apache.maven.plugins </groupId>
  44. <artifactId>maven-compiler-plugin </artifactId>
  45. <configuration>
  46. <source>1.8 </source>
  47. <target>1.8 </target>
  48. </configuration>
  49. </plugin>
  50. </plugins>
  51. </build>
  52. </project>

然后配置数据库连接


   
  1. spring.datasource.url=jdbc:mysql: //127.0.0.1:3306/springboot?useSSL=false
  2. spring.datasource.username=root
  3. spring.datasource.password=root
  4. spring.datasource.driver- class-name=com.mysql.jdbc.Driver
  5. spring.jpa.properties.hibernate.hbm2ddl.auto=update
  6. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
  7. spring.jpa.show-sql= true

实体类


   
  1. package com.pwl.springboot.entity;
  2. import javax.persistence.Entity;
  3. import javax.persistence.Id;
  4. import javax.persistence.Table;
  5. @Entity
  6. @Table(name= "user") //指定数据库表名
  7. public class User {
  8. @Id
  9. private String id;
  10. private String name;
  11. private String age;
  12. public String getId() {
  13. return id;
  14. }
  15. public void setId(String id) {
  16. this.id = id;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public String getAge() {
  25. return age;
  26. }
  27. public void setAge(String age) {
  28. this.age = age;
  29. }
  30. }

service层

UserService接口


   
  1. package com.pwl.springboot.service;
  2. import com.pwl.springboot.entity.User;
  3. public interface UserService {
  4. public User getUserByname(String name);
  5. }

UserServiceImpl实现类


   
  1. package com.pwl.springboot.service.impl;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Service;
  4. import com.pwl.springboot.dao.UserDao;
  5. import com.pwl.springboot.entity.User;
  6. import com.pwl.springboot.service.UserService;
  7. @Service
  8. public class UserServiceImpl implements UserService{
  9. @Autowired
  10. private UserDao userDao;
  11. @Override
  12. public User getUserByname(String name) {
  13. User user = userDao.findByName(name);
  14. return user;
  15. }
  16. }

dao


   
  1. package com.pwl.springboot.dao;
  2. import org.springframework.data.jpa.repository.JpaRepository;
  3. import com.pwl.springboot.entity.User;
  4. public interface UserDao extends JpaRepository<User, String> {
  5. public User findByName(String name);
  6. }

主要就是继承了JpaRepository

具体的关键字,使用方法和生产成SQL如下表所示

Keyword Sample JPQL snippet
And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2
Or findByLastnameOrFirstname … where x.lastname = ?1 or x.firstname = ?2
Is,Equals findByFirstnameIs,findByFirstnameEquals … where x.firstname = ?1
Between findByStartDateBetween … where x.startDate between ?1 and ?2
LessThan findByAgeLessThan … where x.age < ?1
LessThanEqual findByAgeLessThanEqual … where x.age ⇐ ?1
GreaterThan findByAgeGreaterThan … where x.age > ?1
GreaterThanEqual findByAgeGreaterThanEqual … where x.age >= ?1
After findByStartDateAfter … where x.startDate > ?1
Before findByStartDateBefore … where x.startDate < ?1
IsNull findByAgeIsNull … where x.age is null
IsNotNull,NotNull findByAge(Is)NotNull … where x.age not null
Like findByFirstnameLike … where x.firstname like ?1
NotLike findByFirstnameNotLike … where x.firstname not like ?1
StartingWith findByFirstnameStartingWith … where x.firstname like ?1 (parameter bound with appended %)
EndingWith findByFirstnameEndingWith … where x.firstname like ?1 (parameter bound with prepended %)
Containing findByFirstnameContaining … where x.firstname like ?1 (parameter bound wrapped in %)
OrderBy findByAgeOrderByLastnameDesc … where x.age = ?1 order by x.lastname desc
Not findByLastnameNot … where x.lastname <> ?1
In findByAgeIn(Collection ages) … where x.age in ?1
NotIn findByAgeNotIn(Collection age) … where x.age not in ?1
TRUE findByActiveTrue() … where x.active = true
FALSE findByActiveFalse() … where x.active = false
IgnoreCase findByFirstnameIgnoreCase … where UPPER(x.firstame) = UPPER(?1)

最后就是controller


   
  1. package com .pwl .springboot .controller;
  2. import org .springframework .beans .factory .annotation .Autowired;
  3. import org .springframework .stereotype .Controller;
  4. import org .springframework .web .bind .annotation .RequestMapping;
  5. import org .springframework .web .bind .annotation .ResponseBody;
  6. import com .pwl .springboot .entity .User;
  7. import com .pwl .springboot .service .UserService;
  8. @ Controller
  9. @RequestMapping( "/")
  10. public class HelloController {
  11. @ Autowired
  12. private UserService userService;
  13. @ RequestMapping(" hello")
  14. @ResponseBody
  15. public String hello() {
  16. return " hello_world";
  17. }
  18. @ RequestMapping(" getUser")
  19. @ResponseBody
  20. public User getUser(String name) {
  21. return userService .getUserByname( name);
  22. }
  23. }

测试结果

原文地址:https://blog.csdn.net/qq_38157516/article/details/82379078
发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

spring boot2 整合(二)JPA(特别完整!)知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。