本文简单介绍一下spring boot+JPA实现简单的增删改查功能
一、项目结构简述
二、搭建spring boot+jap环境
三、代码示例
四、spring boot的启动方式
一、项目结构简述
1、项目的目录结构注意点
问题说明:
①使用内置服务器启动springboot
项目时,会从@SpringBootApplication
修饰类所在的包开始,加载当前包和所有子包下的类,将由@Component
@Repository
@Service
@Controller
修饰的类交由spring
进行管理;
②如上图,项目中的启动类为ApplacationController,他与其他层代码的处于同一个包下面,项目启动时会扫描到其他层的代码,就不会报如下错误(如果启动类所在的包与其它层代码所在的包处于平级目录中,即使启动类使用了@ComponentScan注解一样会报下面的错误):
Action: Consider defining a bean of type 'cn.oschina.dao.PersonRespority' in your configuration.
二、搭建spring boot+jap环境
1、pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.oschaina</groupId> <artifactId>simple-spring-boot</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 添加Mysql和JPA--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.45</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project>
2、application.properites(或者是application.yml)
server.port=8081 server.context-path=/girl spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driverClassName=com.mysql.jdbc.Driver # Specify the DBMS #spring.jpa.database=MYSQL # Hibernate ddl auto (create, create-drop, update) spring.jpa.hibernate.ddl-auto=update # Show or not log for each sql query spring.jpa.show-sql=true # 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
三、代码示例
1、代码示例
(1)启动类
package cn.oschina; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; /** * 应用启动类 自动扫描: * * 使用内置服务器启动springboot项目时,会从@SpringBootApplication修饰类所在的包开始,加载当前包和所有子包下的类, * * 将由@Component @Repository @Service @Controller修饰的类交由spring进行管理 * * @author Freedom * */ @SpringBootApplication public class ApplacationController { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run( ApplacationController.class, args); String[] profiles = context.getEnvironment().getActiveProfiles(); if (profiles != null) { for (String profile : profiles) { System.out.println("------------start with profile : " + profile); } } } }
(2)控制层
package cn.oschina.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; 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.PutMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import cn.oschina.entity.Person; import cn.oschina.service.IPersonService; @RestController public class PersonController { @Autowired private IPersonService personService; @GetMapping(value = "/persons") public List<Person> persons() { return personService.findAll(); } @GetMapping("/person/{id}") public Person getPersonById(@PathVariable("id") Integer id) { return personService.findOne(id); } @PostMapping("/save") public Person savaPerson(@RequestParam("name") String name, @RequestParam("age") Integer age) { Person p = new Person(); p.setAge(age); p.setName(name); return personService.insert(p); } @PutMapping("/update/{id}") public Person updatePerson(@PathVariable("id") Integer id, @RequestParam("name") String name) { Person p = new Person(); p.setId(id); p.setName(name); return personService.update(p); } @DeleteMapping("/delete/{id}") public void deletePerson(@PathVariable("id") Integer id) { personService.delete(id); } }
(3)业务层
package cn.oschina.service; import java.util.List; import cn.oschina.entity.Person; /** * 对表tbl_person的增删改查 * * @author Freedom * */ public interface IPersonService { List<Person> findAll(); Person findOne(Integer id); Person insert(Person p); Person update(Person p); void delete(Integer id); }
package cn.oschina.service; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import cn.oschina.dao.PersonRespority; import cn.oschina.entity.Person; /** * 对表tbl_person的增删改查 * * @author Freedom * */ @Service public class PersonService implements IPersonService { @Resource private PersonRespority personRespority; @Override public List<Person> findAll() { return personRespority.findAll(); } @Override public Person findOne(Integer id) { return personRespority.findOne(id); } @Override public Person insert(Person p) { return personRespority.save(p); } /** * 更新也是使用save()方法 */ @Override public Person update(Person p) { return personRespority.save(p); } @Override public void delete(Integer id) { personRespority.delete(id); } }
(4)数据访问层
package cn.oschina.dao; import org.springframework.data.jpa.repository.JpaRepository; import cn.oschina.entity.Person; public interface PersonRespority extends JpaRepository<Person, Integer> { }
(5)实体
package cn.oschina.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "tbl_person") public class Person { @Id @GeneratedValue private int id; private String name; private int age; public Person() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
2、运行分析
(1)POST请求时
(2)PUT方式请求说明
四、spring boot的启动方式
1、@SpringBootApplication注解的类,并且main函数中执行SpringApplication.run方法
public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run( ApplacationController.class, args); String[] profiles = context.getEnvironment().getActiveProfiles(); if (profiles != null) { for (String profile : profiles) { System.out.println("------------start with profile : " + profile); } } }
2、使用maven指令方式
①找到项目所在的根目录;
②执行mvn spring-boot:run指令;
相关推荐
在本教程中,我们将深入探讨如何使用Spring Boot、JPA(Java Persistence API)以及Thymeleaf模板引擎实现一个简单的数据库操作,包括增删改查(CRUD)。Spring Boot简化了Java应用程序的开发过程,而JPA是Java平台...
SpringBoot+JPA+thymeleaf框架实现增删改查分页显示,前端通过bootstrap渲染
本项目选择了"Maven+SpringBoot+JPA"这一技术栈,旨在提供一个简单的单表操作示例,帮助开发者快速理解如何在Spring Boot环境下使用Maven构建项目,并通过Spring Data JPA实现数据的增删改查功能。 首先,让我们...
springboot项目,基于SpringBoot+Vue实现增删改查分页DEMO(源码+数据库) 技术栈 数据库:MySQL 后端框架:SpringBoot+Spring Data JPA 前端框架:Vue-ElementUI
【标题】"spring boot+jpa+redis集群"的实现与应用 在现代互联网开发中,Spring Boot、JPA(Java Persistence API)以及Redis已经成为构建高效、可扩展的应用程序的常用技术栈。本项目结合这三个核心组件,旨在创建...
在本文中,我们将深入探讨如何使用Spring Boot、JPA(Java Persistence API)和MySQL数据库来构建一个基础的增删改查(CRUD)应用程序。Spring Boot简化了Java应用的初始设置,而JPA则作为ORM(对象关系映射)工具,...
你可以通过这个接口进行增删改查的操作,如`save()`, `findAll()`, `findById()`, 和 `delete()`。 为了将这些操作与Thymeleaf模板结合,你需要创建一系列的控制器方法。比如,`UserController`中可以有`listUsers...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、...基于LayUI+Spring Boot+MySQL+JPA+Shiro的科研信息管理系统源码+项目说明+数据库.zip
在本项目中,"SpringBoot+MyBatisPlus+Thymeleaf 增删改查CRUD"是一个典型的Web开发应用,它整合了三个关键的技术框架:Spring Boot、MyBatis Plus和Thymeleaf。下面将详细介绍这三个组件以及它们在实现增删改查...
本文将深入探讨如何使用React作为前端框架,Spring Boot作为后端微服务框架,结合MySQL数据库来实现一个完整的增删改查功能。 **React** 是Facebook开发的一个JavaScript库,用于构建用户界面,尤其适合构建单页面...
持久层框架:Spring boot Jpa 安全框架:Spring Security 缓存框架:Redis 日志打印:logback+log4jdbc 接口文档 swagger2 其他:fastjson,aop,MapStruct等。 页面框架:Vue 前端源码:eladmin-qt 后端源码:el...
Spring Data JPA可以方便地实现数据库操作,通过@Entity注解定义实体类,@Repository定义数据访问接口,@Service进行业务逻辑处理,而@Controller处理HTTP请求并返回响应。 2. **Vue.js**: Vue.js是一种轻量级的...
这些测试应该覆盖各种可能的操作,如增删改查,确保拦截器能正确地处理不同的数据库交互。 总的来说,这个Demo为我们提供了一个基于Java、Spring Boot和JPA的分库分表实现示例。它涵盖了从JPA的基本使用到AOP拦截器...
【标题】"Spring Boot + JPA + SQL Server + Bootstrap 整合应用" 【知识点详解】 在现代Web开发中,Spring Boot、JPA、SQL Server和Bootstrap是四个非常关键的技术组件,它们共同构建了一个高效、易用且功能强大...
本项目结合了SpringBoot、SpringSecurity以及JPA(Java Persistence API),实现了用户角色权限的登录认证功能。以下是关于这些技术及实现过程的详细讲解。 1. **SpringBoot**:SpringBoot简化了Spring应用的初始...
在IT领域,Spring Boot、JPA(Java Persistence API)和Shiro都是常见的技术框架,用于构建高效、便捷的Web应用程序。下面将详细解释这三个技术及其在"spring-boot+shiro+jpa"项目中的应用。 首先,Spring Boot是...
整合这些技术,我们可以创建一个完整的Web应用流程:用户通过JSP页面发送请求,Spring Boot接收并路由请求,然后通过JPA和Hibernate与数据库交互,完成数据的增删改查操作,最后将结果返回给JSP页面进行展示。...
管理员可以对学生、教师信息增删改查。教师可以批改学生作业,并且通过echartjs对学生成绩汇总统计,横向比较可以查看某个班级某门课及格、优秀等成绩段占比。纵向比较可以查看某年级某门课程不同班级每个班级的平均...
在本项目中,我们主要探讨的是如何利用Spring Boot、MySQL、Mybatis以及Maven这四大核心技术,配合IDEA集成开发环境来实现一个基础的数据库增删改查功能。这是一个典型的Web应用开发流程,旨在帮助开发者快速搭建...
8. **运行**:启动Spring Boot应用,通过HTTP请求访问Web页面,实现单表的增删改查功能。 这个项目是一个典型的微服务架构示例,展示了如何利用现代Java技术栈构建一个完整的Web应用。通过学习和实践这个项目,...