目录
打开idea,点击File->New->Project
![](https://i-blog.csdnimg.cn/blog_migrate/ab4f676eff209ed15ce1d0206bbb52fa.png)
选择Spring Initializr,然后选择Default,点击Next
![](https://i-blog.csdnimg.cn/blog_migrate/97d9bc5a3849999602a95763feab85b1.png)
填写包名等等信息(这里我全部用的是默认值),点击Next
![](https://i-blog.csdnimg.cn/blog_migrate/3caf1e438a38464e89e7656d08b76fb1.png)
在Web页面勾选Spring Web
![](https://i-blog.csdnimg.cn/blog_migrate/0b19eb3fd272890d1f9d61c06209ca9c.png)
在SQL页面勾选JDBC API和Spring Data JPA
![](https://i-blog.csdnimg.cn/blog_migrate/2bd0799822df779123d79c21108dc1cc.png)
选择路径,点击Finish
![](https://i-blog.csdnimg.cn/blog_migrate/667b0827566dc57e5a546a5f875f79a0.png)
选择自动导入maven
![](https://i-blog.csdnimg.cn/blog_migrate/f1d6bcc69b78f86d54563102e39956b5.png)
新建好的工程结构如下,其中DemoApplication是程序入口
![](https://i-blog.csdnimg.cn/blog_migrate/a99ca3260f85852c01f1df2f4f7cbcbd.png)
设置打包形式为jar
![](https://i-blog.csdnimg.cn/blog_migrate/f18c14caf97f1d2538ebecbdf147e6bb.png)
(有时候一些maven包版本不一样会有报错,记得对一下版本)
加入mysql依赖
![](https://i-blog.csdnimg.cn/blog_migrate/e731fb1515816dc33492f68b249f7317.png)
在application.properties文件中配置mysql
############################################################
# mysql
############################################################
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
首先我们可以编写一个HelloController测试一下
![](https://i-blog.csdnimg.cn/blog_migrate/7682de3e45afd15aeb63846879cac3c1.png)
运行程序,控制台输出如下内容
![](https://i-blog.csdnimg.cn/blog_migrate/4eab8bc20eb1936fd7e79c1113be1bfa.png)
用浏览器访问localhost:8080/hello,可以看到页面显示字符Helloworld!
![](https://i-blog.csdnimg.cn/blog_migrate/5739ee7aca64b321fae2584f3fb4eedc.png)
我们再来新建一个实体类Student,用@Entity 注解表明该类为一个实体类,@Table注解说明其表格名称
![](https://i-blog.csdnimg.cn/blog_migrate/c0ccddffc7ed20af676fad1945a03f66.png)
@Id注解用于指定主键,@GeneratedValue注解用于指定主键生成方法,然后设置所有属性的set和get方法,这里注意了:没有get方法private属性不能直接在html中访问,会报Whitelabel Error Page错误
![](https://i-blog.csdnimg.cn/blog_migrate/d15f625e2f838c12257e03b49a209b0d.png)
★主键生成策略有以下几种:
- IDENTITY:主键自增,Oracle 不支持这种方式;
- AUTO: JPA自动选择合适的策略,缺省值;
- SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql不支持这种方式
- TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植
我们新建一个接口StudentRepository继承JpaRepository<Student,Integer>
![](https://i-blog.csdnimg.cn/blog_migrate/017fa250630e5e6e74af60a7b62d2d7e.png)
现在我的数据库student表长这样
![](https://i-blog.csdnimg.cn/blog_migrate/789864ad69e303cbd704e58a61903004.png)
对了,如果要数据库自动生成表记得在
application.properties文件中配置gpa,不然数据库中没有这个表就会报错
############################################################
#
# gpa
#
############################################################
spring.jpa.generate-ddl=true
然后我们来编写controller可以实现对数据库表的操作,用@RestController注释这个类,用@Autowired注释给studentRepository自动注入,用findall方法查找所有学生信息并返回,运行一下~
![](https://i-blog.csdnimg.cn/blog_migrate/03240009c190b87d600fe631393bdff3.png)
在浏览器中输入localhost:8080/student,成功读出了数据(我这里用的是QQ浏览器,有的浏览器会中文乱码的)
![](https://i-blog.csdnimg.cn/blog_migrate/5747cacfecdd2bf98c6e8cac26f66c75.png)
★注意:@RestController注解相当于@ResponseBody + @Controller合在一起的作用(如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解),但使用@RestController这个注解,就不能返回jsp、html页面,视图解析器无法解析jsp、html页面
说白了就是我们这里不能只用
@Controller注解,不然凉凉
@GetMapping是一个组合注解,相当于@RequestMapping(method = RequestMethod.GET)
@PostMapping是一个组合注解, 相当于 @RequestMapping(method = RequestMethod.POST)
最后放一下工程的文件结构