创建项目
安装依赖
打开项目目录下的pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--简化Get、Set方法lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--mysql数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--数据库操作jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
-
lombok依赖 自动帮我们生成getter setter 方法 这里有个小坑 如果idea版本过低的话
需要安装插件
- mysql 数据库链接依赖
-
jpa操作依赖
安装完记着
配置文件
修改resources下application.properties 为 application.yml (因为yml看着更清晰易懂)
打开 application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root # 数据库账号
password: # 数据库密码
url: jdbc:mysql://localhost:3306/你的数据库?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
jpa:
hibernate:
ddl-auto: none # 设置不用模型生成数据库
server:
port: 8082
- 配置数据库链接 和 端口号 默认是8080 (自己可以随便改不冲突就行)
开始编码
ps: 其实3个类就完成 但是分层才能让他代码看着更加舒服
- 首选我们创建4个包
- controller 控制层
- model 实体类 映射 数据库
- service 服务层
-
repository dao层 数据库访问层
我的目录结构:
-
model 创建 Banner类
先看看看我的表结构:
@Entity // 数据库映射实体类注解
@Data // lombok 注解生成get set方法
// 1. 如果下面的类名驼峰式(列如: banner_item 是 BannerItem)
// 2. @Table(name = "banner") 加上这个注解 下面随便命名
public class Banner {
@Id// ID主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //插入操作是ID自增长
private Long id;
private String name;
private String description;
private String title;
private String img;
}
千万注意上面的主键id注解是javax.persistence包下的**
- repository 创建 BannerRepository注意这里是接口 继承 jpaRepository<T, ID>
/**
* Created by 风 on 2020/9/16.
* 继承jpaRepository<T, ID>
* 1. T: 实体类Banner
* 2. ID banner实体类的主键ID的类型 我的这里是Long
*/
public interface BannerRepository extends JpaRepository<Banner, Long> {
}
- Service 创建BannerService
ps:这里标准的应该是 写个接口 BannerService 然后 用BannerServiceImpl类 来实现BannerService 但是感觉这样太烦了 所以没有写接口直接创建BannerService类
@Service // 打上这个注解
public class BannerService {
@Autowired // 这个注解引用我们写的BannerRepository
private BannerRepository bannerRepository;
// 创建根据id获取banner 数据的方法
public Banner getById(Long id){
return bannerRepository.findById(id).orElse(null);
}
// 创建获取全部banner的方法
public List<Banner> getBannerList(){
return bannerRepository.findAll();
}
}
*可以看到上面的findByid 和 findAll 这个方法我们BannerRepository都没有定义 都是jpa 自带的 jpa真强大 *
- 创建BannerController
/**
* Created by 风 on 2020/9/16.
*/
@RequestMapping("/hello") // @RequestMapping表示url路由
@RestController // 等同于@ResponseBody + @Controller
public class BannerController {
@Autowired // 引入BannerService
private BannerService bannerService;
// @PostMapping
// @DeleteMapping
// @PutMapping 可以根据自己的需求定义请求类型
@GetMapping("/{id}")
public Banner getById(@PathVariable Long id){
return bannerService.getById(id); // 调用bannerService方法
}
@GetMapping("")
public List<Banner> getByList(){
return bannerService.getBannerList(); // 调用bannerService方法
}
}
@Controller 控制器注解 @ResponseBody 返回前端的数据是json格式
*@PathVariable 获取url路径参数 *
运行
-
日志
测试
- 上配置说了我的端口配置8082 , controller 里requestmapping("/hello") 然后我的地址应该是 localhost:8082/hello
-
localhost:8082/hello/1 代表是第一个接口@GetMapping("/{id}")
-
localhost:8082/hello 代表是第一个接口@GetMapping("")
- 完美 哈哈 第一次写博客有不正确的地方欢迎大家指出 多多交流
源码地址
https://github.com/7400108/springboot-jpa-dome