我们创建一个简单的例子,这个例子中使用springboot+hibernate 实现了与mysql数据库的交互。同时使用RESULFUL风格http接口,实现数据访问展示,使用json格式数据进行交互。
假定的需求场景是博客的文章管理,对图书进行CRUD操作,这是一个非常简单的场景。
一,设计数据库
1 | CREATE TABLE `articles` ( |
这张表非常的简单,我们只添加了标题,与文章类别。同事插入了三行数据。
二,maven 及项目结构划分
1. maven 文件
1 | <?xml version="1.0" encoding="UTF-8"?> |
配置描述:
- spring-boot-starter-parent 用于依赖管理的父POM
- spring-boot-starter-web:构建Web,REST应用程序的入口。它使用tomcat服务器作为默认的嵌入式服务器。
- spring-boot-starter-data-jpa:启动Spring数据JPA管理
- spring-boot-devtools:它提供了开发工具,代码热部署等
- spring-boot-maven-plugin:用于创建应用程序的可执行JAR。
2. 项目结构
结构描述:
- entity 数据库映射model
- dao 数据访问层实现
- service 业务层实现
- controller 控制器实现
二, 数据访问层实现
1. 编写entity
我们使用的是注解的方式,配置entity。
1 | import java.io.Serializable; |
非常简单,很容易理解。
2. 编写访问层实现
1 | @Transactional |
- 类上面标记了@Transactional 受事务控制,同时标了@Repository 标注数据访问组件。
- EntityManager 上面标@PersistenceContext,实体管理器,用于执行持久化操作。
三,业务层与控制器实现
1. 业务层实现
1 | @Service |
- 使用@Service标明,为服务层。
- IArticleDAO 上面标 @Autowired,引入数据层实现
2. 控制器实现
1 | @Controller |
- 类上面@Controller,@RequestMapping(“user”) 标明为控制器,且mapping为/user
- getArticleById 方法上标明@GetMapping(“article/{id}”),既后面的参数id 为查询的文章编号
四,application.properties 配置
1 | ##server |
五,演示
spring boot 帮助文档:https://docs.spring.io/spring-boot/docs/current/reference/html/
demo git地址: https://github.com/nick-weixx/springboot-demo1