`

8. 使用JPA保存数据【从零开始学Spring Boot】

阅读更多

 à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

 

网易云课堂视频最新更新

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

3、Spring Boot日志-log4j2

第十二章 Spring Boot 知识点2

1、spring boot 服务配置和部署

2、Spring Boot 定制URL匹配规则

 

 

在看这一篇文档的话,需要先配置好JPA – Hibernate

       总体步骤:

(1)   创建实体类Demo,如果已经存在,可以忽略。

(2)   创建jpa repository类操作持久化。

(3)   创建service类。

(4)   创建restful请求类。

(5)   测试

 

代码如下:

com.kfit.test.bean.Demo

package com.kfit.test.bean;

 

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

 

/**

 * 测试实体类.

 * @author Administrator

 *

 */

@Entity //加入这个注解,Demo就会进行持久化了,在这里没有对@Table进行配置,请自行配置。

public class Demo {

       @Id @GeneratedValue

       private long id;//主键.

       private String name;//测试名称.

       public long getId() {

              return id;

       }

       public void setId(long id) {

              this.id = id;

       }

       public String getName() {

              return name;

       }

       public void setName(String name) {

              this.name = name;

       }

}

 

 

com.kfit.test.dao.DemoRepository(这是一个接口,没有具体的实现,这就是JPA:

package com.kfit.test.dao;

import org.springframework.data.repository.CrudRepository;

import com.kfit.test.bean.Demo;

/*

 * CrudRepository自带常用的crud方法.

 * 这样一个基本dao就写完了.

 */

public interface DemoRepository extends CrudRepository<Demo, Long>{

 

}

 

到这里保存数据的方法就写完了。CrudRepository类把一些常用的方法都已经进行定义和实现了。那么你现在就可以在别的类引入调用了。

另外就是Spring Data的核心接口里面Repository是最基本的接口了, spring提供了很多实现了该接口的基本接口,:CrudRepositoryPagingAndSortingRepositorySimpleJpaRepositoryQueryDslJpaRepository等大量查询接口

 

com.kfit.test.service.DemoService :

package com.kfit.test.service;

 

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.kfit.test.bean.Demo;

import com.kfit.test.dao.DemoRepository;

 

/**

 * 提供Demo服务类.

 * @author Administrator

 *

 */

@Service

publicclass DemoService {

   

    @Resource

    private DemoRepository demoRepository;

   

@Transactional

    publicvoid save(Demo demo){

       demoRepository.save(demo);

    }

}

 

com.kfit.test.web.Demo2Controller(这里为了代码干净,新建了一个测试类)

package com.kfit.test.web;

 

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import com.kfit.test.bean.Demo;

import com.kfit.test.service.DemoService;

 

@RestController

@RequestMapping("/demo2")

publicclass Demo2Controller {

    @Resource

    private DemoService demoService;

   

    /**

     * 测试保存数据方法.

     * @return

     */

    @RequestMapping("/save")

    public String save(){

       Demo d = new Demo();

       d.setName("Angel");

       demoService.save(d);//保存数据.

       return"ok.Demo2Controller.save";

    }

   

}

 

之后就可以进行测试了,访问地址:http://127.0.0.1:8080/demo2/save

查看数据库,就可以看到已经添加的数据了。

 

=========================================================================

您的打赏是我最大的动力,打开微信或者支付宝扫描二维码向我打赏吧:


(支付宝支付)

 

 



(微信支付)

 

 

视频&交流平台

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

网易云课堂视频最新更新

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

3、Spring Boot日志-log4j2

第十二章 Spring Boot 知识点2

1、spring boot 服务配置和部署

2、Spring Boot 定制URL匹配规则

 

 

分享到:
评论
15 楼 johnchibi 2017-04-20  
@Transactional应该应用哪一个:
org.springframework.transaction.annotation.Transactional?
还是javax.transaction.Transactional;
14 楼 LM5463640 2017-04-07  
关于本章中,如果有朋友遇到评论中,某某无法注入的问题。像这种:
“org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService': No qualifying bean of type ......”


首先你的目录结构应该是这种形式:
com.baidu.dao
com.baidu.service
com.baidu.controller
重点是这里,你的启动项的位置:
com.baidu.app
如果是类似这种形式,就会报错,说某某某无法注入的问题。

原因:
SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!
也就是说,上面的目录结构中,只会扫描com.baidu.app包和其子包,如果service和dao不在
com.baidu.app包或其子包下,就会扫描不到,所有就无法注入了

解决办法就是把启动项的包,改一下com.baidu或者把其他的包改成启动项所在包的子包。
13 楼 bencaocao 2016-12-02  
bencaocao 写道
只要一个数据库的配置文件,就能连接数据库了吗?

知道了,还要pom.xml配置,粗心了
12 楼 bencaocao 2016-12-02  
只要一个数据库的配置文件,就能连接数据库了吗?
11 楼 林祥纤 2016-08-29  
LCAdream 写道
林祥纤 写道
LCAdream 写道
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService': No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]


按照---使用JPA保存数据【从零开始学Spring Boot】篇文章编写,异常信息如上。


找不多UserService,你看下,你在UserService对应的实现类中添加@Service注解了嘛?



还是加群问下,第一篇文章就有群号。

controller类:
@RestController
@EnableAutoConfiguration
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/save")
    public String save(){
        MD5 md5 = new MD5();
        User user = new User();
        user.setU_id("lc");
        user.setUsername("lcadream");
        user.setPassword(md5.toString());
        userService.save(user);
        return "保存成功";
    }
}

Service类:
@Service
public class UserService {
    @Autowired
    private UserInfoIn userInfoIn;
    @Transactional
    public void save(User user){
        userInfoIn.save(user);
    }
}

dao类:
@Repository
public interface UserInfoIn extends CrudRepository<User,Long> {
}

实体类:
@Entity //加入这个注解,User就会进行持久化
@Table(name = "s_user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private String u_id;
    private String username;
    private String password;
    private String name;
    private String email;
    private String phone;
    private int status;
    private Date create_date;
    private Date update_date;
省略setter和getter及构造器方法

数据库配置文件:
########################################################
###datasource
########################################################
spring.datasource.url = jdbc:mysql://localhost:3306/hsweb?serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10


########################################################
### Java Persistence Api
########################################################
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

10 楼 LCAdream 2016-08-29  
林祥纤 写道
LCAdream 写道
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService': No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]


按照---使用JPA保存数据【从零开始学Spring Boot】篇文章编写,异常信息如上。


找不多UserService,你看下,你在UserService对应的实现类中添加@Service注解了嘛?



9 楼 LCAdream 2016-08-29  
林祥纤 写道
LCAdream 写道
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService': No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]


按照---使用JPA保存数据【从零开始学Spring Boot】篇文章编写,异常信息如上。


找不多UserService,你看下,你在UserService对应的实现类中添加@Service注解了嘛?



controller类:
@RestController
@EnableAutoConfiguration
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/save")
    public String save(){
        MD5 md5 = new MD5();
        User user = new User();
        user.setU_id("lc");
        user.setUsername("lcadream");
        user.setPassword(md5.toString());
        userService.save(user);
        return "保存成功";
    }
}

Service类:
@Service
public class UserService {
    @Autowired
    private UserInfoIn userInfoIn;
    @Transactional
    public void save(User user){
        userInfoIn.save(user);
    }
}

dao类:
@Repository
public interface UserInfoIn extends CrudRepository<User,Long> {
}

实体类:
@Entity //加入这个注解,User就会进行持久化
@Table(name = "s_user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private String u_id;
    private String username;
    private String password;
    private String name;
    private String email;
    private String phone;
    private int status;
    private Date create_date;
    private Date update_date;
省略setter和getter及构造器方法

数据库配置文件:
########################################################
###datasource
########################################################
spring.datasource.url = jdbc:mysql://localhost:3306/hsweb?serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10


########################################################
### Java Persistence Api
########################################################
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
8 楼 林祥纤 2016-08-29  
LCAdream 写道
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService': No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]


按照---使用JPA保存数据【从零开始学Spring Boot】篇文章编写,异常信息如上。


找不多UserService,你看下,你在UserService对应的实现类中添加@Service注解了嘛?
7 楼 LCAdream 2016-08-28  
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService': No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.java.app.service.UserService] found for dependency [com.java.app.service.UserService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]


按照---使用JPA保存数据【从零开始学Spring Boot】篇文章编写,异常信息如上。
6 楼 林祥纤 2016-08-14  
qq1488888 写道
DemoRepository 类是不是要加@Repository注解呢?



不需要,会自动扫描。
5 楼 qq1488888 2016-08-14  
DemoRepository 类是不是要加@Repository注解呢?
4 楼 林祥纤 2016-08-09  
maofukaialh 写道
楼主

@EnableJpaRepositories(basePackages = "com.repository")

少了 开启JPA注解扫描 ,允许会报错。



1.3.3的默认开启了,你这是哪个版本的?
3 楼 maofukaialh 2016-08-09  
楼主

@EnableJpaRepositories(basePackages = "com.repository")

少了 开启JPA注解扫描 ,允许会报错。
2 楼 林祥纤 2016-08-03  
flameday 写道
resource这个文件名少了一个字母 “r”


oh,sorry,我改下,谢谢提醒。
1 楼 flameday 2016-08-03  
resource这个文件名少了一个字母 “r”

相关推荐

    7. JPA - Hibernate【从零开始学Spring Boot】

    作为从零开始学习Spring Boot的一部分,理解如何有效地利用这些技术进行数据库操作至关重要。 首先,JPA是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它为开发人员提供了一种统一的API,简化了...

    从零开始学Spring Boot

    1.10 使用JPA保存数据 1.11 使用JdbcTemplate 1.12 Spring Boot修改端口号 1.13 Spring Boot配置ContextPath 1.14 Spring Boot改变JDK编译版本 1.15 处理静态资源(默认资源映射) 1.16 处理静态资源(自定义资源映射...

    1. [视频]spring boot起步之Hello World【从零开始学Spring Boot】

    在本节中,我们将深入探讨"Spring Boot起步之Hello World"这一主题,这是学习Spring Boot...随着学习的深入,可以逐步探索更多高级特性,如数据访问、安全、云服务集成等,从而在实际项目中充分利用Spring Boot的优势。

    从零开始学spring boot

    在《从零开始学Spring Boot》这本书中,作者可能会详细讲解如何创建第一个Spring Boot应用,如何配置和使用Spring Boot的各种特性,以及如何进行单元测试和集成测试。书中可能还会涉及Spring Security,用于保护应用...

    从零开始学Spring Boot1

    【从零开始学Spring Boot】是一本旨在帮助初学者快速入门Spring Boot的教程。Spring Boot是Spring框架的一个扩展,它简化了Java应用的初始搭建以及开发过程,通过自动配置、starter依赖等方式,使得开发者可以快速地...

    9. 使用JdbcTemplate【从零开始学Spring Boot】

    在本节中,我们将深入探讨如何在Spring Boot项目中使用JdbcTemplate进行数据库操作。JdbcTemplate是Spring框架提供的一种简化数据库访问的工具,它通过提供一套模板方法,使得开发者可以更安全、更方便地执行SQL语句...

    spring-boot实战PDF 完整版和随书源码.7z

    《Spring Boot实战》是一本深度剖析Spring Boot框架的实践指南,旨在帮助开发者快速掌握Spring Boot的核心概念和技术。这本书深入浅出地介绍了如何使用Spring Boot构建高效、简洁的Java应用程序。随书源码提供了丰富...

    Springboot入门到精通(超详细文档)

    自动配置意味着Spring Boot会根据你的项目依赖来自动配置一些bean,比如数据源、JPA、WebSocket等。Starter poms是一系列预配置的Maven或Gradle依赖,它们帮助你快速添加所需的Spring模块。 在创建第一个Spring ...

    Springboot入门到精通完整版.pdf

    Spring Boot 是一个由 Pivotal 团队开发的框架,其设计目的是简化Spring应用程序的初始设置和配置。Spring Boot 并非意图替代 Spring 框架,而是为开发者提供一个快速构建、部署和管理现代Java应用程序的平台。通过...

    Spring Boot 系列教程 入门

    总的来说,"Spring Boot系列教程入门"将涵盖以上知识点,并逐步教你如何从零开始搭建和运行一个完整的Spring Boot应用,包括配置、依赖管理、数据访问、Web开发和部署等方面,让你快速成为Spring Boot开发的行家里手...

    架构探险_从零开始学spring

    《架构探险:从零开始学Spring》是一本深入浅出的Spring框架学习指南,作者通过细致入微的讲解,带领读者逐步掌握Spring的核心概念和技术。Spring作为Java领域最流行的轻量级框架,其广泛应用于企业级应用开发,是...

    从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建.docx

    在本文中,我们将详细介绍如何从零开始搭建一个基于Spring Boot的开发环境,其中包括Spring Boot、Mybatis和Swagger2的集成。首先,让我们了解为何选择Spring Boot。 **为什么使用Spring Boot** Spring Boot是...

    Java毕业设计——基于spring boot的就业信息管理网站设计与实现(源码+数据库).7z

    总的来说,这个项目为学习者提供了一个从零开始到完整部署的实战案例,涵盖了Spring Boot应用的开发、数据库设计、前后端交互等多个关键知识点。通过分析和实践这个项目,可以深入理解Spring Boot的工作原理,提高...

    Spring Boot 系列实战合集.zip

    1. 创建第一个 Spring Boot 项目:从零开始创建一个简单的 "Hello, World!" 应用,理解 Maven 或 Gradle 项目的结构。 2. 使用 Spring Boot 的自动配置:探究如何利用自动配置来简化配置文件。 3. 开发 RESTful API...

    Spring boot基础demo

    Spring Boot是Java开发中的一个流行框架,用于简化Spring应用程序的创建和配置过程。它通过提供预配置的starter pom或gradle...这个demo是一个实践型的学习资源,帮助开发者从零开始接触并掌握Spring Boot的基础知识。

    Spring Boot 入门到实战

    在实战环节,我们将通过一个完整的项目案例,一步步引导你从零开始搭建并部署一个Spring Boot应用,包括需求分析、设计、编码、测试和上线,让你真正掌握Spring Boot的实战技能。 总的来说,《Spring Boot 入门到...

Global site tag (gtag.js) - Google Analytics