打开idea,点击File->New->Project
选择Spring Initializr,然后选择Default,点击Next
填写包名等等信息(这里我全部用的是默认值),点击Next
在Web页面勾选Spring Web
在SQL页面勾选JDBC API和Spring Data JPA
选择路径,点击Finish
选择自动导入maven
新建好的工程结构如下,其中DemoApplication是程序入口
设置打包形式为jar
(有时候一些maven包版本不一样会有报错,记得对一下版本)
加入mysql依赖
在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测试一下
运行程序,控制台输出如下内容
用浏览器访问localhost:8080/hello,可以看到页面显示字符Helloworld!
我们再来新建一个实体类Student,用@Entity 注解表明该类为一个实体类,@Table注解说明其表格名称
@Id注解用于指定主键,@GeneratedValue注解用于指定主键生成方法,然后设置所有属性的set和get方法,这里注意了:没有get方法private属性不能直接在html中访问,会报Whitelabel Error Page错误
★主键生成策略有以下几种:
- IDENTITY:主键自增,Oracle 不支持这种方式;
- AUTO: JPA自动选择合适的策略,缺省值;
- SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql不支持这种方式
- TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植
我们新建一个接口StudentRepository继承JpaRepository<Student,Integer>
现在我的数据库student表长这样
对了,如果要数据库自动生成表记得在
application.properties文件中配置gpa,不然数据库中没有这个表就会报错
############################################################
#
# gpa
#
############################################################
spring.jpa.generate-ddl=true
然后我们来编写controller可以实现对数据库表的操作,用@RestController注释这个类,用@Autowired注释给studentRepository自动注入,用findall方法查找所有学生信息并返回,运行一下~
在浏览器中输入localhost:8080/student,成功读出了数据(我这里用的是QQ浏览器,有的浏览器会中文乱码的)
★注意:@RestController注解相当于@ResponseBody + @Controller合在一起的作用(如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解),但使用@RestController这个注解,就不能返回jsp、html页面,视图解析器无法解析jsp、html页面
说白了就是我们这里不能只用
@Controller注解,不然凉凉
@GetMapping是一个组合注解,相当于@RequestMapping(method = RequestMethod.GET)
@PostMapping是一个组合注解, 相当于 @RequestMapping(method = RequestMethod.POST)
最后放一下工程的文件结构